MySQL存储引擎
承接:《高性能MySQL》阅读 Mysql架构和历史 二、
20210108 22:00-24:00阅读整理搬运
25.【太黄君】诗号:
欲知神器十八种,脚担黄土十八层。
- MySQL存储引擎之innoDB
- InnoDB存储引擎:是MySQL的默认存储引擎;InnoDB 通过 MVCC 和 NEXT-KEY Locking 间隙锁策略,解决了在可重复读的事务隔离级别下出现幻读的问题
- MVCC:多版本并发控制(Mutilversion Concurrency Control),
- 行锁定方式:
- 行锁(Recode Lock):锁直接加载索引记录上边,封锁该行的索引记录,select * from table where id=2 for update : id必须是唯一索引或者主键,这样才会触发行锁,否则会退化为一种异变间隙锁(Next-key lock)
- 间隙锁(Gap Lock):间隙锁是基于非唯一索引,锁加在不存在的空间,锁定一段范围内的索引记录(是一个开区间),可以是两个索引记录之间,也可能是第一个索引记录之前或最后一个索引之后的空间
- Next-key Lock: 行锁与间隙锁组合起来用叫做Next-key Lock.它的间隙锁锁定区间是一个左开右闭的区间;
- SUMMARY:(1)InnoDB中的行锁的实现依赖于索引,一旦某个加锁操作没有使用到索引,那么该锁就会退化为表锁;(2)记录锁存在于包括主键索引在内的唯一索引中,锁定单条索引记录(3间隙锁存在于非唯一索引中,锁定开区间范围内的一段间隔,它是基于临键锁实现的)(4)临键锁存在于非唯一索引中,该类型的每条记录的索引上都存在这种锁,它是一种特殊的间隙锁,锁定一段左开右闭的索引区间
- 索引类型:
- normal-普通索引
- unique:唯一索引
- full textl:全文搜索索引
- 主键
- 单列,双列
- 多列
- InnoDB存储引擎:是MySQL的默认存储引擎;InnoDB 通过 MVCC 和 NEXT-KEY Locking 间隙锁策略,解决了在可重复读的事务隔离级别下出现幻读的问题