MySQL - 使用PK和DELETE时出现死锁错误

时间:2015-12-13 18:15:38

标签: mysql

我有一个mysql DELETE查询,其中WHERE子句使用IN键的主键:

delete from my_table where id in (4, 900, 700);

我遇到了死锁错误。我不明白为什么会这样,或者如何避免它。没有其他查询正在为这些ID选择,尽管其他查询正在从同一个表中选择/删除/添加。 PK id特定于单个用户,因此没有其他人使用这些相同的ID。我认为使用主键会阻止delete语句锁定其他行。

编辑:引擎是innoDB

1 个答案:

答案 0 :(得分:0)

首先,它是哪个存储引擎?它会持续多长时间才能产生死锁错误?

如果是myisam,引擎具有表级锁定,因此大多数操作都可以阻止表。如果它持续超过你的mysql实例的最大查询超时,它可能会抛出错误。

另外,你可以使用Percona的pt-deadlock-logger来帮助找到问题。