让我审视您的情况并解释这些锁的工作方式:
1箱
T1想要更新测试表中的某些行。此事务将IX锁放在所有表上,将X锁放在前5行上。
T2希望更新测试表中的某些行。此事务将IX(因为IX与IX兼容)锁定在所有表上,并尝试到前5行,但由于X与X不兼容而无法执行
所以我们很好。
2.1案例
T1想要更新测试表中的某些行。此事务将IX锁放在所有表上,将X锁放在前5行上。
T2希望从测试表中选择一些行。而且它不会放置任何锁(因为InnoDB提供了非锁定读取)
2.1案例
T1想要更新测试表中的某些行。此事务将IX锁放在所有表上,将X锁放在前5行上。
T2想要更新(选择更新)测试表中的某些行。将IS放在整个表上,并尝试在行上获取S锁,但由于X和S不兼容而失败。
还请始终注意隔离级别:不同的级别会导致不同的机制释放/获取锁
希望能帮助到你
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)