2

我正在使用jOOQ数据库抽象层与 MySql 数据库交谈。

我不断收到以下错误:

SQL [null]; Deadlock found when trying to get lock; try restarting transaction 

这是在向表中批量插入大约 500 行的过程中。可能会从不同的线程一次尝试多个这些批量插入。

是什么导致了死锁,我该如何避免它?

4

1 回答 1

2

传统的死锁是当一个事务试图锁定 A 然后 B 而另一个试图锁定 B 然后 A 时,导致两者都无法完成的情况。当特定资源上的挂起锁过多时,MySQL 会产生另一种死锁。

您应该检查SHOW PROCESSLIST您有多少“等待锁定”进程。可能是那些失败的人只是运气不好,因为排队的人太多了。

于 2012-08-18T19:32:41.393 回答