首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新查询被锁定

更新查询被锁定
EN

Stack Overflow用户
提问于 2014-07-24 18:38:57
回答 1查看 717关注 0票数 0

这可能是一个加载的问题,但是MySQL进程锁的原因可能是什么呢?我们遇到了一个问题,我们试图使用我们的软件的一个功能,它“冻结”。对于这个问题,我们发现对MySQL数据库的查询是“锁定”的,软件在返回之前等待锁解锁/解析。

一些背景情况下,我们在Glassfish上运行一个Spring应用程序,并让GF执行DB连接池管理。在我们请求执行一个特定的“更新”函数之前,所有事情似乎都很正常,直到我们开始锁定这些线程。

  • 我们正在更新的表是innodb,并设置了默认值(我认为行锁定是默认的)。
  • 运行show engine innodb status;时没有报告任何死锁。
  • 运行show full processlist会显示一些“锁定”进程。我们没有显式地锁定代码中的任何内容。
  • 我们在讨论中没有外键限制。ID是唯一的主键。
  • 从任何地方运行锁定的“update”查询将导致另一个锁定查询。我们可以从那张桌子中选择,没有问题。我们可以在其他表格中插入,没有问题。

我唯一能找到的就是这里的第一个答案- MySQL InnoDB hangs on waiting for table-level locks。在人们使用系统时,我们可能已经运行了数据库转储。这是最有可能的原因,还是这里可能有其他原因?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-24 20:44:46

当然,带有默认选项的mysqldump将在转储表之前锁定这些表,从而导致更新被InnoDB完全阻塞。

使用mysqldump的--single-transaction选项可以避免这个问题。

请参阅:Run MySQLDump without Locking Tables

此外,由于它是表锁,而不是行锁,所以无法使用innodb_lock_wait_timeout控制超时。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24941515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档