当前读
- select...lock in share mode (共享读锁)
- select...for update
- update , delete , insert
快照读
通过undo和MVCC实现
在可重复读的情况下,快照读可以避免幻读,在当前读的情况下需要加上间隙锁。
MVCC 在读已提交(Read Committed)和可重复读(Repeatable Read)隔离级别下起作用
MVCC的实现是基于ReadView版本链以及Undo日志实现的
InnoDB存储引擎的表来说,它的聚簇索引记录中都包含两个必要的隐藏列
-
trx_id:每次一个事务对某条聚簇索引记录进行改动时,都会把该事务的事务id赋值给trx_id隐藏列。
-
roll_pointer:每次对某条聚簇索引记录进行改动时,都会把旧的版本写入到undo日志中,然后这个隐藏列就相当于一个指针,可以通过它来找到该记录修改前的信息
聚簇索引简单说就是表中记录的物理顺序与键值的索引顺序相同,一个表只能有一个聚集索引,这类索引是和数据存在一起的