面试场景汇总.txt

UP 返回
此笔记主要汇总徐庶抖音视频

1.动态查询条件如何优化
	首先分析出比较常用的几个字段,建立联合索引
	对于最常用的字段,比如分类,作为索引的第一个
	为了不使索引失效,可以在业务允许的情况下,为第一个查询条件设置默认值
	如果不可以用默认值,可以分库分表,比如根据类型 时间分表
	或者使用es 大数据的形式进行查询,这种不受索引限制

2.MySQL隔离级别 MVCC(Multiversion Concurrency Control 多版本并发控制器)
	MYSQL并发会产生的问题有:
		脏读——读已提交(行锁,读不会加锁)
		不可重复读——重复读(行锁,读和写都会上锁)
		幻读——串行化(表锁)	
	MySQL有4种隔离级别
		1.读未提交。会产生脏读,通过设置 读已提交 解决该问题
			!!@@202502201.img_1484_797_1@@!!
		2.读已提交。会产生不可重复读,可以设置 可重复读 解决
			!!@@202502202.img_1485_684_1@@!!
		3.可重复读。会产生幻读的问题,可以设置 串行化 解决,相当于读取表时加表锁,其他事务如果需要对这张表增删改就得等待,并发性能很低
			!!@@202502205.img_1211_546_1@@!!
		4.串行化
	MYSQL默认可重复读,oracle默认读已提交
	
	以读已提交为例,虽然采用了行锁,但是读取却并未加锁,不然修改时读取也得等待:
	MYSQL除了表本身的字段,还会额外维护几个字段:
		id 主键(不重要,与本例无关)
		DB_TRX_ID	用来存储最近插入修改的事务id。删除也视为修改
		DB_ROLL_PTR	回滚指针,指向这条记录的上一个版本数据
DOWN 返回