这可能是一个加载的问题,但是MySQL进程锁的原因可能是什么呢?我们遇到了一个问题,我们试图使用我们的软件的一个功能,它“冻结”。对于这个问题,我们发现对MySQL数据库的查询是“锁定”的,软件在返回之前等待锁解锁/解析。
一些背景情况下,我们在Glassfish上运行一个Spring应用程序,并让GF执行DB连接池管理。在我们请求执行一个特定的“更新”函数之前,所有事情似乎都很正常,直到我们开始锁定这些线程。
show engine innodb status;时没有报告任何死锁。show full processlist会显示一些“锁定”进程。我们没有显式地锁定代码中的任何内容。我唯一能找到的就是这里的第一个答案- MySQL InnoDB hangs on waiting for table-level locks。在人们使用系统时,我们可能已经运行了数据库转储。这是最有可能的原因,还是这里可能有其他原因?
发布于 2014-07-24 20:44:46
当然,带有默认选项的mysqldump将在转储表之前锁定这些表,从而导致更新被InnoDB完全阻塞。
使用mysqldump的--single-transaction选项可以避免这个问题。
请参阅:Run MySQLDump without Locking Tables
此外,由于它是表锁,而不是行锁,所以无法使用innodb_lock_wait_timeout控制超时。
https://stackoverflow.com/questions/24941515
复制相似问题