Django 加上事务后报异常: Deadlock found when trying to get lock; try restarting transaction

2021-03-15 15:35:24 +08:00
 qize0921

Django 项目, 用的是 Mysql 数据库, 服务器开了 16 个线程在跑, 有加事务, 然后访问量上来后, 日志中时不时会出现 "Deadlock found when trying to get lock; try restarting transaction" 这样的异常, 这个异常是加事务那块代码抛出的

在事务包裹的代码里, 大概执行了以下操作:

网上查了查 有的说是外键问题, 有的说是两条数据同时操作同一个表的问题, 没太搞明白, 想请教一下有没有遇到过类似情况的, 指点一下

1774 次点击
所在节点    Django
2 条回复
jenlors
2021-03-16 10:12:20 +08:00
明显是出现了死锁,看看事务包裹的代码是不是执行时间太长,尝试将一个大事务拆分为多个小事务,事务里面不要有网络请求等。
qize0921
2021-03-16 11:34:42 +08:00
@long2ice 感谢回复 我检查了下代码 发现确实有相关的操作 应该是执行时间太长导致的 我已经修改 之后再观察观察

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/761799

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX