在Mysql文档中:“https://dev.mysql.com/doc/refman/5.7/en/innodb-deadlocks-handling.html”
它提到:“如果您使用锁定读取(SELECT ... FOR UPDATE或SELECT ... LOCK IN SHARE MODE),请尝试使用较低的隔离级别,例如READ COMMITTED。”< / p>
有人能告诉我为什么我不能使用“可重复读取”吗?例子很好。
干杯
答案 0 :(得分:4)
如果您使用read-committed,InnoDB会避免使用某些类型的锁。这可以帮助您避免死锁。
我设计了一个完整的演示文稿:InnoDB Locking Explained with Stick Figures。
但是你几乎永远无法避免100%的死锁情况。它们不是一个错误,它们是并发系统的自然组成部分。您可以减少死锁发生的频率,但您可能也习惯了解死锁。设计代码以捕获异常并在发生死锁时重试数据库操作。