auto commit

This commit is contained in:
CyC2018
2019-12-06 10:11:23 +08:00
parent 532e1f64d3
commit 7c2454cf8e
114 changed files with 536 additions and 532 deletions

View File

@ -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 无法实现
## 版本号
在封锁一节中提到加锁能解决多个事务同时执行时出现的并发一致性问题但是封锁操作代价很高而多版本并发控制采用无锁机制而是利用版本来解决并发一致性问题它的基本思想是为每个数据行维护创建
- 系统版本号是一个递增的数字每开始一个新的事务系统版本号就会自动递增
- 事务版本号事务开始时的系统版本号