阅读了这篇有趣的文章后,我有一些问题。
这张表格展示了死锁的情况:
T1在表t_lock1上持有所有c1=5行的X锁,而T2在表t_lock2上持有所有C1=1行的X锁。
现在,这些事务都想更新先前由对方锁定的行。这导致了死锁。
问题 #1
- 事务是否获取了锁?我知道从表中读取是使用共享锁完成的,而写入表则使用排他锁完成(我谈论的是默认的锁定设置)。
因此,从这个例子中看来,事务也持有锁...这是正确的吗?
问题 #2
... T1在表t_lock1上持有所有c1=5行的X锁...
- 依我之见,锁定不是按行进行的(尽管可以),但作者没有提到 - 那么为什么他说:在所有c1=5的行上?