我有错误Lock wait timeout exceeded; try restarting transaction
。出现这种情况的原因是什么以及如何解决?供参考:innodb_lock_wait_timeout = 100
在 MySQL 配置文件中。
这是问题锁争用,最终导致其中一个锁超时。以下是一些建议:
- 确保您有正确的索引,这会导致行级不锁表级锁。这将减少争用。
- 确保您有索引外键限制。检查期间的关系约束
insert
or update
,有些数据库如果没有这样的索引就会锁定整个引用表(不知道MySQL是不是这样)
- 如果问题仍然存在,请尝试使交易更快/更小。同样,这将减少数据库上的争用。
- 增加超时但保持合理的值
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)