Skip to content

Commit cad9c26

Browse files
authored
Merge pull request #239 from BeBraveBeCurious/patch-5
Update ch7.md
2 parents 9a94881 + 9ac4ed4 commit cad9c26

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

ch7.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,7 @@ VoltDB 还使用存储过程进行复制:但不是将事务的写入结果从
690690

691691
- 若事务要读取对象,则须先以共享模式获取锁。允许多个事务同时持有共享锁。但如果另一个事务已经在对象上持有排它锁,则这些事务必须等待。
692692
- 若事务要写入一个对象,它必须首先以独占模式获取该锁。没有其他事务可以同时持有锁(无论是共享模式还是独占模式),所以如果对象上存在任何锁,该事务必须等待。
693-
- 如果事务先读取再写入对象,则它可能会将其共享锁升级为独占锁。升级锁的工作与直接获得排他锁相同
693+
- 如果事务先读取再写入对象,则它可能会将其共享锁升级为独占锁。升级锁的工作与直接获得独占锁相同
694694
- 事务获得锁之后,必须继续持有锁直到事务结束(提交或中止)。这就是 “两阶段” 这个名字的来源:第一阶段(当事务正在执行时)获取锁,第二阶段(在事务结束时)释放所有的锁。
695695

696696
由于使用了这么多的锁,因此很可能会发生:事务 A 等待事务 B 释放它的锁,反之亦然。这种情况叫做 **死锁(Deadlock)**。数据库会自动检测事务之间的死锁,并中止其中一个,以便另一个继续执行。被中止的事务需要由应用程序重试。

0 commit comments

Comments
 (0)