gpt4 book ai didi

mysql - 更新查询已锁定

转载 作者:行者123 更新时间:2023-11-29 12:49:45 26 4
gpt4 key购买 nike

这可能是一个有问题的问题,但是 MySQL 进程锁的原因可能是什么?我们遇到了一个问题,我们试图使用我们软件的一项功能,但它“卡住”了。通过调查该问题,我们发现对 MySQL 数据库的查询被“锁定”,并且软件在返回之前等待锁定解锁/解析。

一些背景知识,我们正在 Glassfish 上运行 Spring 应用程序,并让 GF 进行数据库连接池管理。一切似乎都工作正常,直到当我们请求执行一个特定的“更新”功能时,这些线程开始锁定。

  • 我们要更新的表是 innodb,并且设置了默认值(我认为行锁定是默认值)
  • 运行show engine innodb status;没有报告任何死锁。
  • 运行show full processlist会显示一些“锁定”进程。我们没有明确锁定代码中的任何内容。
  • 我们对相关表没有外键约束。 ID 是唯一的主键。
  • 从任何地方运行锁定的“更新”查询都会导致另一个锁定的查询。我们可以毫无问题地从该表中进行选择。我们可以毫无问题地插入其他表。

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

最佳答案

当然,使用默认选项的 mysqldump 会在转储表之前锁定表,从而导致 InnoDB 完全阻止更新。

使用 mysqldump 的 --single-transaction 选项来避免此问题。

参见: Run MySQLDump without Locking Tables

此外,由于它是表锁,而不是行锁,因此无法通过 innodb_lock_wait_timeout 来控制超时。 .

关于mysql - 更新查询已锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24941515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com