mysql知识理清

时间:2022-12-28 01:15:31

MVCC

1.MVCC概念:MVCC全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是为MySQL并发场景下无锁生成读视图进行读操作来进行多版本控制。
2.MVCC实现依赖undo log
3.不同隔离级别下MVCC表现
“读未提交”隔离级别:直接返回记录上的最新值,没有视图概念。
“读已提交”隔离级别下,视图是在每次SELECT时生成的。(违背了事务ACID里的隔离性)
“可重复读”隔离级别下:视图是在第一次SELECT时创建的,事务读取期间的SELECT都用这个视图。(此隔离级别下需要利用间隙锁来解决幻读问题)
“串行化”隔离级别下:直接用加锁的方式来避免并行访问,没有视图概念。

索引失效的情况

ayugudu
1 左 % like ,
2 or中有一个非索引 ,
3 不满足最左前缀原则,
4索引上做加减乘除,
5索引不存储null因此使用null 会导致索引失效,
6 使用内置函数,如 varchar=1没有加引号 ,里面其实走了convert函数,导致失效