为什么我不应该将“可重复读取”与锁定读取一起使用(选择“用于更新”)?

Box*_*ery 3 mysql deadlock read-committed

在Mysql文档中:“ https://dev.mysql.com/doc/refman/5.7/en/innodb-deadlocks-handling.html

它提到:“ 如果使用锁定读取(SELECT ... FOR UPDATE或SELECT ... LOCK IN SHARE MODE),请尝试使用较低的隔离级别,例如READ COMMITTED。

有人可以告诉我为什么我不能使用“重复阅读”吗?例子会很好。

干杯

Bil*_*win 5

如果您使用读提交,InnoDB避免使用某些类型的锁。这可以帮助您避免死锁。

我设计了一个完整的演示文稿:InnoDB Locking用Stick Figures进行了解释

但是您几乎永远无法避免100%发生死锁的情况。它们不是错误,它们是并发系统的自然组成部分。您可以减少死锁发生的频率,但是您也可能会习惯一些死锁。设计代码以捕获异常并在遇到死锁时重试数据库操作。