超出MySQL锁等待超时

时间:2010-01-20 08:12:37

标签: mysql locking timeout

我收到错误Lock wait timeout exceeded; try restarting transaction。这是什么原因以及如何解决问题?仅供参考:MySQL配置文件中的innodb_lock_wait_timeout = 100

2 个答案:

答案 0 :(得分:6)

这是锁争用的问题,最终导致其中一个锁超时。以下是一些建议:

  • 确保您拥有正确的索引,导致行级锁定而不是表级锁定。这将减少争用。
  • 确保您有外键约束的索引。要检查insertupdate期间的关系约束,如果没有这样的索引,某些数据库会锁定整个引用的表(不知道这是否是MySQL的情况)
  • 如果问题仍然存在,请尝试更快/更小的交易。同样,这将减少对数据库的争用。
  • 增加超时但保持合理值

答案 1 :(得分:0)

这是在交易需要很长时间的高流量系统上发生的(即表被锁定了很长时间)?如果是这样,您可能需要查看事务代码,以使其更短/更精细/更高效。

相关问题