
三种读
- 脏读:读到事物未提交的数据
- 不可重复度:俩次读取数据不一样,中间有事物进行了更新操作
- 幻读:读取俩次数据,第二次读取多了数据,中间有事物进行了插入操作
MYSQL默认隔离级别:重复度
MVCC 多版本控制
三种关键:隐藏字段,undo_log,ReadView
隐藏字段:当前事物id,回滚指针指向undo_log
undo_log: 记录数据的历史版本,形成undo_log链
read_view: 读快照,读已提交的隔离级别每次读取都创建一个,可重复读隔离级别在事务开始时创建一个,事务期间一直使用这个read_view
读数据过程
- 读取数据时,构建read_view
- 根据read_view判断数据版本是否可见
- 可见则读取数据,不可见则根据回滚指针找到undo_log链,找到可见版本读取
规则
1 | // 查询 |