超过MySQL锁等待超时

超过MySQL锁等待超时,mysql,locking,timeout,Mysql,Locking,Timeout,我已超过错误锁定等待超时;尝试重新启动事务。原因是什么?如何解决问题?仅供参考:innodb\u lock\u wait\u timeout=100在MySQL配置文件中。这是否发生在高流量系统上,其中事务需要很长时间(即表被锁定很长时间)?如果是这样,您可能希望查看事务代码,使其更短/更细粒度/更高性能 这是锁争用的问题,最终导致其中一个锁超时。以下是一些建议: 确保您有正确的索引,这些索引导致行级别锁定,而不是表级别锁定。这将减少争用 确保在外键上有索引。为了在insert或update期

我已超过错误
锁定等待超时;尝试重新启动事务
。原因是什么?如何解决问题?仅供参考:
innodb\u lock\u wait\u timeout=100
在MySQL配置文件中。

这是否发生在高流量系统上,其中事务需要很长时间(即表被锁定很长时间)?如果是这样,您可能希望查看事务代码,使其更短/更细粒度/更高性能

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

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