序言
《MySQL45讲》
事务
begin/start transaction 命令并不是一个事务的起点,在执行到它们之后的第一个操作 InnoDB 表的语句,事务才真正启动。
事务的启动方式不同,事务的启动时机也不同:
begin/start transaction
,启动方式,一致性视图是在执行第一个快照读语句时创建。start transaction with consistent snapshot
:一致性视图,是在执行start transaction with consistent snapshot 时创建的。
视图
在MySQL中,有两个“视图”的概念。
- 一个是view,利用SQL语句创建而成。create view … ,查询方式和表差不多。
- 另一个是InnoDB,在实现MVCC时用到的一致性读视图,即:
consistent read view
,用于支持read commit(读提交)和Repeatable Read,可重复读)隔离级别的实现。它没有物理结构,作用是事务执行期间用来定义“我能看到什么数据”。
快照
在可重复读隔离级别下,事务在启动的时候就“拍了个快照”。注意,这个快照是基于整库的。