Skip to content

Commit d8f5b96

Browse files
committed
增加一致性问题的描述
1 parent b436178 commit d8f5b96

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

transaction.adoc

+7
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,13 @@ Repeatable Read(可重复读) 是 MySQL 默认事务隔离级别。
3232

3333
=== 常见错误
3434

35+
. *脏写 Dirty Write* -- 如果一个事务**修改**了另一个未提交事故**修改过**的数据,就意味着发生了脏写现象。可以把脏写现象简称为 P0。
36+
. *脏读 Dirty Read* -- 如果一个事务**读到**了另一个未提交事务**修改过**的数据,就意味着发生了脏读现象。可以额把脏读现象简称为 P1。
37+
. *不可重复读 NonRepeatable Read* -- 如果一个事务**修改**了另外一个未提交事务**读取**的数据,就意味着发生了不可重复读现象,或者叫模糊读 Fuzzy Read 现象。可以把不可重复读现象简称为 P2。
38+
. *幻读 Phantom* -- 如果一个事务先根据某些搜索条件查询出一些记录,在该事务**未提交时**,另一个事务**写入**了一些**符合那些搜索条件**的记录(CUD 任意一种),就意味着发生了幻读现象。可以把幻读现象简称为 P3。
39+
40+
TIP: 这里采用 《A Critique of ANSI SQL Isolation Levels》 论文中的定义。
41+
3542
==== Phantom Read(幻读)
3643

3744
B 事务读取了两次数据,在这两次的读取过程中A事务添加了数据,B 事务的这两次读取出来的集合不一样。幻读产生的流程如下:

0 commit comments

Comments
 (0)