ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2019-06-27 05:04:02  阅读:334  来源: 互联网

标签:mysql locking delete-row


尝试从表中删除行时,我不断收到这些错误.这里的特例是我可能同时运行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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有