Merge pull request #70 from 2997ms/patch-1

Update ch7.md
This commit is contained in:
Feng Ruohang 2020-05-27 21:54:19 +08:00 committed by GitHub
commit 03cdebe141
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

2
ch7.md
View File

@ -569,7 +569,7 @@ COMMIT;
在医生值班的例子中在步骤3中修改的行是步骤1中返回的行之一所以我们可以通过锁定步骤1 中的行(`SELECT FOR UPDATE`)来使事务安全并避免写入偏差。但是其他四个例子是不同的:它们检查是否**不存在**某些满足条件的行,写入会**添加**一个匹配相同条件的行。如果步骤1中的查询没有返回任何行则`SELECT FOR UPDATE`锁不了任何东西。 在医生值班的例子中在步骤3中修改的行是步骤1中返回的行之一所以我们可以通过锁定步骤1 中的行(`SELECT FOR UPDATE`)来使事务安全并避免写入偏差。但是其他四个例子是不同的:它们检查是否**不存在**某些满足条件的行,写入会**添加**一个匹配相同条件的行。如果步骤1中的查询没有返回任何行则`SELECT FOR UPDATE`锁不了任何东西。
这种效应:一个事务中的写入改变另一个事务的搜索查询的结果,被称为**幻读**【3】。快照隔离避免了只读查询中幻读但是在像我们讨论的例子那样的读写事务中会导致特别棘手的写入偏差情况。 这种效应:一个事务中的写入改变另一个事务的搜索查询的结果,被称为**幻读**【3】。快照隔离避免了只读查询中幻读但是在像我们讨论的例子那样的读写事务中会导致特别棘手的写入偏差情况。
#### 物化冲突 #### 物化冲突