数据库
首页 > 数据库> > mysql – 删除行会导致锁定超时

mysql – 删除行会导致锁定超时

作者:互联网

尝试从表中删除行时,我不断收到这些错误.这里的特例是我可能同时运行5个进程.

该表本身是一个约450万行的Innodb表.我的WHERE子句中使用的列没有索引.其他指数正如所料.

它是在一个transcation中完成的,首先我删除记录,然后我插入替换记录,并且只有在插入所有记录时才应该提交事务.

错误信息:

Query error: Lock wait timeout exceeded; try restarting transaction while executing DELETE FROM tablename WHERE column=value

这里在引用列上创建索引会有帮助吗?我应该明确锁定行吗?

我在问题#64653中找到了一些其他信息,但我不认为它完全涵盖了我的情况.

是否确定是导致错误的DELETE语句,还是查询中的其他语句? DELETE语句是第一个,所以它似乎合乎逻辑,但我不确定.

解决方法:

索引肯定会有所帮助.如果您尝试替换已删除的记录,我建议您修改查询以使用更新而不是DELETE后跟INSERT,如果可能的话:

INSERT INTO tableName SET
column2 = 'value2'
WHERE column = value
ON DUPLICATE KEY UPDATE
column2 = 'value2'

标签:mysql,locking,delete-row
来源: https://codeday.me/bug/20190627/1301195.html