作者回复: 可能是我这里因为要突出和上一条乐观锁的对比,让你产生了误解。应该是,悲观锁不管读写都要直接加锁。
作者回复: 赞!我也无力吐槽临键锁这个翻译,但是大家都用我也跟着用。
作者回复: 写错了,我修正一下!感谢指正!
作者回复: 如果你不加 for update 的话,正常来说是根据隔离级别,用 MVCC 的机制来读取数据。
作者回复: 又是怎么个说法? To prevent phantoms, InnoDB uses an algorithm called next-key locking that combines index-row locking with gap locking. https://dev.mysql.com/doc/refman/8.0/en/innodb-next-key-locking.html
作者回复: 不是。意向锁的意思是我将来要拿一个锁,MDL 是你已经拿到了锁。所以我的理解就是,如果你要拿MDL 读锁,你现有一个意向共享锁。写锁也是类似的。
作者回复: 谢谢!
作者回复: 是的。不过其实我觉得与其理解为优化,不如说如果我是一个设计者,我也会直接咔嚓一个记录锁锁住,因为在这种情况下我能准确推断出来哪些需要被锁住。
作者回复: 你需要显式锁住某一行,不想别人修改的时候。你们不用说明你们可能用了乐观锁、分布式锁之类的东西。 不用是好事,哈哈哈。
作者回复: 问倒我了,我自己没有遇到过。我认为在互联网业务里面应该没啥必须得场景,但是金融那边就不太确定。