这可能是一个加载的问题,但是我们的MySQL进程锁定可能是什么原因?我们遇到了一个问题,我们试图使用我们软件的一个功能并且它已经冻结了#39;。在研究这个问题的过程中,我们发现对MySQL数据库的查询被锁定了#39;并且软件在返回之前等待锁解锁/解决。
有些背景,我们在Glassfish上运行Spring应用程序,让GF进行数据库连接池管理。一切似乎工作正常,直到我们开始让这些线程锁定时,我们要求执行一个特定的更新'功能。
show engine innodb status;
没有报告任何死锁。show full processlist
会显示一些“已锁定”状态。流程。我们未在代码中明确锁定任何内容。我能找到的东西是第一个答案 - MySQL InnoDB hangs on waiting for table-level locks。当人们使用系统时,我们可能已经运行了数据库的转储。这是最可能的原因还是可以在这里开展其他工作?
答案 0 :(得分:1)
当然,带有默认选项的mysqldump会在转储表之前锁定表,导致更新完全阻止InnoDB。
对mysqldump使用--single-transaction
选项以避免此问题。
请参阅: Run MySQLDump without Locking Tables
此外,由于它是表锁,而不是行锁,因此无法使用innodb_lock_wait_timeout
控制超时。