插入和删除查询是不是可以从锁定等待超时中逃脱?

Posted

技术标签:

【中文标题】插入和删除查询是不是可以从锁定等待超时中逃脱?【英文标题】:Is it possible for Insert and delete queries to escape from Lock wait timeout?插入和删除查询是否可以从锁定等待超时中逃脱? 【发布时间】:2019-07-18 15:40:13 【问题描述】:

在我的项目中,我使用的是隔离级别 READ-COMMITTED 的 innodb 存储引擎。 我将我的 innodb_lock_wait_timeout 设为 300 秒(5 分钟)。对于选择和更新查询,如果他们等待其他事务持有的锁,5 分钟后,我得到 ​​p>

“锁定等待超时..尝试重新启动事务。”

但是对于插入查询(有时删除查询),即使在 5 分钟后我也没有得到锁定等待超时。 就在 5 分钟后,如果我终止那些插入查询,我会得到基于连接终止的异常,这是预期的,但在

“显示进程列表”

查询被标记为已终止,但查询似乎会保留一两个多小时。 是否有任何配置参数导致此或其他原因。谷歌搜索了此类问题,但找不到正确答案。

仅供参考: 我只是插入 1 行(不是批量插入),它正在等待获取锁。

【问题讨论】:

【参考方案1】:

当进一步挖掘和调试时,发现是mysql 5.7.18版本的问题。当使用 5.7.24 更新时,等待锁定的查询实际上会抛出“超过锁定等待超时。尝试重新启动事务”。

【讨论】:

以上是关于插入和删除查询是不是可以从锁定等待超时中逃脱?的主要内容,如果未能解决你的问题,请参考以下文章

超过锁定等待超时;从表中删除数据时尝试重新启动事务

MySQL 错误:超过锁定等待超时;尝试重新启动事务查询

“错误代码:1205。超过锁定等待超时;尝试重新启动事务”删除事件

调用某些查询时,MySQL“超过锁定等待超时”

如何在jdbc中设置锁定超时

使用模型工厂的 MySQL 锁定等待超时