auto commit
This commit is contained in:
@ -285,17 +285,17 @@ SELECT ... FOR UPDATE;
|
||||
|
||||
## 可重复读(REPEATABLE READ)
|
||||
|
||||
保证在同一个事务中多次读取同样数据的结果是一样的。
|
||||
保证在同一个事务中多次读取同一数据的结果是一样的。
|
||||
|
||||
## 可串行化(SERIALIZABLE)
|
||||
|
||||
强制事务串行执行。
|
||||
强制事务串行执行,这样多个事务互不干扰,不会出现并发一致性问题。
|
||||
|
||||
需要加锁实现,而其它隔离级别通常不需要。
|
||||
该隔离级别需要加锁实现,因为要使用加锁机制保证同一时间只有一个事务执行,也就是保证事务串行执行。
|
||||
|
||||
----
|
||||
|
||||
| 隔离级别 | 脏读 | 不可重复读 | 幻影读 |
|
||||
| | 脏读 | 不可重复读 | 幻影读 |
|
||||
| :---: | :---: | :---:| :---: |
|
||||
| 未提交读 | √ | √ | √ |
|
||||
| 提交读 | × | √ | √ |
|
||||
@ -304,10 +304,12 @@ SELECT ... FOR UPDATE;
|
||||
|
||||
# 五、多版本并发控制
|
||||
|
||||
多版本并发控制(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。而未提交读隔离级别总是读取最新的数据行,无需使用 MVCC。可串行化隔离级别需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。
|
||||
多版本并发控制(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。而未提交读隔离级别总是读取最新的数据行,要求很低,无需使用 MVCC。可串行化隔离级别需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。
|
||||
|
||||
## 版本号
|
||||
|
||||
在封锁一节中提到,加锁能解决多个事务同时执行时出现的并发一致性问题。但是封锁操作代价很高,而多版本并发控制采用无锁机制,而是利用“版本”来解决并发一致性问题。它的基本思想是为每个数据行维护创建
|
||||
|
||||
- 系统版本号:是一个递增的数字,每开始一个新的事务,系统版本号就会自动递增。
|
||||
- 事务版本号:事务开始时的系统版本号。
|
||||
|
||||
|
Reference in New Issue
Block a user