Mysql 当多个表被锁定时,DBA可以做什么?

Mysql 当多个表被锁定时,DBA可以做什么?,mysql,Mysql,我有多个表被锁定,看起来它们阻止了其他查询的运行。什么可能导致此问题?我如何防止它?在此期间,我可以做些什么来释放这些锁?我通读了mysql文档,但我真的不明白防止这个问题的步骤是什么 +----------+----------+--------+-------------+ | Database | Table | In_use | Name_locked | +----------+----------+--------+-------------+ | bd1 | tab

我有多个表
被锁定
,看起来它们阻止了其他查询的运行。什么可能导致此问题?我如何防止它?在此期间,我可以做些什么来释放这些
?我通读了mysql文档,但我真的不明白防止这个问题的步骤是什么

+----------+----------+--------+-------------+
| Database | Table    | In_use | Name_locked |
+----------+----------+--------+-------------+
| bd1      | table1   |      0 |           0 |
| bd1      | table2   |      5 |           0 |
| bd1      | table3   |      0 |           0 |
| bd1      | table4   |      1 |           0 |
| bd1      | table5   |      0 |           0 |
| bd1      | table6   |      2 |           0 |
| bd1      | table7   |      4 |           0 |
+----------+----------+--------+-------------+
显示引擎INNODB状态

---TRANSACTION A7DF86B, ACTIVE 10 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 376, 1 row lock(s)
MySQL thread id 170083, OS thread handle 0x15a8, query id 1780479 23.20.117.233 Server2 Updating
UPDATE table7 SET EId = 'b457200', LEd = '2013-02-19 16:03:34', ELR = 'y', LU = '2013-02-19 16:03:
34' WHERE (ObKey = '79321fc7b5ac')

首先,您应该找到引用这些表的查询,并了解它们是如何使用的。其次,您可以尝试使用一些查询提示来提高并发性。请参见

找出导致问题的会话。取消这些会话。设置一个测试环境,尝试在受控条件下复制情况。找出导致锁定的原因并修复它。他将如何发现这些会话?是否可以安全地假设上面的查询来自何处导致了问题?它给出了有问题的线程和查询ID@Nicholas;我猜OP已经知道怎么。。。戴夫·里亚,不,不是;可能是这样,但您发布的信息远远不够确定这一点。这是DBA应该能够告诉您的。这就是为什么你需要测试。当诊断这些问题时,我应该寻找什么?锁的主要原因是什么?