auto commit
This commit is contained in:
parent
b71985e21e
commit
eb1186936a
|
@ -288,18 +288,16 @@ UPDATE t SET x="c" WHERE id=1;
|
|||
|
||||
## 隐藏的列
|
||||
|
||||
MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版本号:
|
||||
MVCC 在每个数据行后面都保存着两个隐藏的列,用来存储两个版本号:
|
||||
|
||||
- 创建版本号:指示创建一个数据行的快照时的系统版本号;
|
||||
- 删除版本号:如果该快照的删除版本未定义或删除版本号大于当前事务版本号表示该快照有效
|
||||
|
||||
|
||||
- 删除版本号:如果该快照的删除版本号未定义或删除版本号大于当前事务版本号表示该快照有效。
|
||||
|
||||
## 实现过程
|
||||
|
||||
以下实现过程针对可重复读隔离级别。
|
||||
|
||||
当开始一个事务时,该事务的版本号肯定大于当前所有数据行快照的创建版本号。数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,因此新创建一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比所有数据行快照的创建版本号都大。
|
||||
因为数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,所以新开始一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比当前所有数据行快照的创建版本号都大。
|
||||
|
||||
### 1. SELECT
|
||||
|
||||
|
@ -331,7 +329,7 @@ SELECT * FROM table ...;
|
|||
|
||||
### 2. 当前读
|
||||
|
||||
MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要加锁操作,从而读取最新的数据。
|
||||
MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要进行加锁操作,从而读取最新的数据。
|
||||
|
||||
```sql
|
||||
INSERT;
|
||||
|
|
|
@ -288,18 +288,16 @@ UPDATE t SET x="c" WHERE id=1;
|
|||
|
||||
## 隐藏的列
|
||||
|
||||
MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版本号:
|
||||
MVCC 在每个数据行后面都保存着两个隐藏的列,用来存储两个版本号:
|
||||
|
||||
- 创建版本号:指示创建一个数据行的快照时的系统版本号;
|
||||
- 删除版本号:如果该快照的删除版本未定义或删除版本号大于当前事务版本号表示该快照有效
|
||||
|
||||
|
||||
- 删除版本号:如果该快照的删除版本号未定义或删除版本号大于当前事务版本号表示该快照有效。
|
||||
|
||||
## 实现过程
|
||||
|
||||
以下实现过程针对可重复读隔离级别。
|
||||
|
||||
当开始一个事务时,该事务的版本号肯定大于当前所有数据行快照的创建版本号。数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,因此新创建一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比所有数据行快照的创建版本号都大。
|
||||
因为数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,所以新开始一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比当前所有数据行快照的创建版本号都大。
|
||||
|
||||
### 1. SELECT
|
||||
|
||||
|
@ -331,7 +329,7 @@ SELECT * FROM table ...;
|
|||
|
||||
### 2. 当前读
|
||||
|
||||
MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要加锁操作,从而读取最新的数据。
|
||||
MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要进行加锁操作,从而读取最新的数据。
|
||||
|
||||
```sql
|
||||
INSERT;
|
||||
|
|
Loading…
Reference in New Issue
Block a user