MVCC 的焦颔首脑是通过为数据记载维护多个版本,来实现并发控制。当一个事件修改数据时,体系不会直接覆盖原有的数据,而是创建一个新的版本。每个版本都有一个唯一的标识符,用来区分差别版本的数据。
在 MySQL 的 InnoDB 存储引擎中,MVCC 紧张通过以下两种方式来标识数据的版本:
事件 ID:每个事件都有一个唯一的事件 ID,数据的每个版本都与天生该版本的事件 ID 相干联。
时间戳:每个数据版本也有一个时间戳,用来标识该版本的创建时间。
在实际操纵中,InnoDB 通过事件 ID 来标识数据的差别版本。比方,假设事件 A 对一条记载举行了修改,体系会创建一个新的版本,并为该版本打上事件 A 的事件 ID。其他事件(比方事件 B)在读取这条数据时,会根据事件的隔离级别和事件 ID 来决定是否能看到该版本的数据。
2.3 事件的开始与竣事(commit 和 rollback)
在 MySQL 中,每个事件都有一个生命周期。事件的生命周期从事件开始(BEGIN)到事件竣事(COMMIT 或 ROLLBACK)为止。