大家好,我是 Snow Hide,作为《MySQL 实战》这个专栏的学员之一,这是我打卡的第 15 天,也是我第 65 次进行这种操作。
今天我重温了该专栏里一篇叫《事务到底是隔离的还是不隔离的?》的文章。
关键词总结:事务启动时机、MySQL 两个 “视图” 的概念、“快照” 在 MVCC 里是怎么工作的?(数据版本 row trx_id 的几种可能、对事务视图来说的数据版本)、更新逻辑(读提交和可重复读的区别)。
所学总结:
事务启动时机
- 执行第一个快照读语句时创建一致性视图;
- 执行 start transaction with consistent snapshot 时创建一致性视图。
MySQL 两个 “视图” 的概念
View 视图、Consistent Read 视图。
数据版本 row trx_id 的几种可能
已提交事务(低水位)、未开始事务(高水位)、未提交事务集合(当前事务)、row trx_id 在数组中、row trx_id 不在数组中。
对事务视图来说的数据版本
版本未提交、版本已提交(视图创建前后)
更新逻辑
读提交和可重复读区别
可重复读隔离级别、读提交隔离级别。
末了
重新总结了一下文中提到的内容:InnoDB 行数据有多个版本、数据版本有自己的 row trx_id、事务或语句有自己的一致性视图、普通查询语句是一致性读、一致性读会根据 row trx_id 和一致性视图确定数据版本可见性、可重复读查询认可在事务启动前就提交的数据、读提交查询认可在语句启动前就提交的数据。
扫描二维码关注公众号,回复:
9024559 查看本文章