O mysqldump está rodando no momento do bloqueio? Parece que o thread 83 pode estar atualmente exportando post
, mas pode ter chamado LOCK TABLES
no banco de dados para obter uma posição consistente em todas as tabelas.
Trabalhando em alguns problemas de desempenho do vBulletin, me deparei com essa situação, em que tudo fica preso esperando em um bloqueio no nível de tabela:
Id Command Time State Info
83 Query 47 Writing to net SELECT /*!40001 SQL_NO_CACHE */ * FROM 'post'
87 Query 117 Waiting for table level lock UPDATE session SET lastactivity = 1362132185, location = '/for
89 Query 116 Waiting for table level lock SELECT * FROM session WHERE userid = 0 AND host = '178.1
90 Query 113 Waiting for table level lock SELECT * FROM session WHERE userid = 0 AND host = '66.24
94 Query 108 Waiting for table level lock select userid from session where sessionhash = '2269de072969ab9d42
96 Query 102 Waiting for table level lock SELECT * FROM session WHERE sessionhash = 'b0e3d290e9f609160
129 Query 15 Waiting for table level lock SELECT * FROM session WHERE userid = 0 AND host = '65.55
130 Query 14 Waiting for table level lock SELECT * FROM session WHERE userid = 0 AND host = '71.19
132 Query 13 Waiting for table level lock SELECT * FROM session WHERE userid = 0 AND host = '178.1
Normalmente, o padrão para diagnosticar problemas de bloqueio é descobrir qual consulta não está bloqueada e, em geral, seu culpado. Mas, neste caso, ele está lendo uma tabela não relacionada, e a consulta que está sendo executada há mais tempo (o que certamente faz parte do problema, já que é a única consulta de atualização) também está bloqueada.
Portanto, a pergunta é: que condições adicionais podem causar a aplicação de um bloqueio no nível da tabela que você poderia esperar de uma situação como a que é vista aqui.
Detalhes do Add'l
Isto é sobre uma instalação padrão do mysql; sem particionamento ou outras travessuras envolvidas |
Tabela posts
é tipo MyISAM
Tabela session
é tipo MEMORY
Outras questões (como a ineficácia gritante da consulta 83 ou a inadvisibilidade de usar o MyISAM) são interessantes, mas não o que está sendo perguntado.
O texto completo da consulta 87 é assim:
Query UPDATE session SET lastactivity = 1362132185, location = '/forums/forumdisplay.php?f=421', inforum = 421, inthread = 0, incalendar = 0, badlocation = 0 WHERE sessionhash = 'e6322935fe2df18106878473f310d91f'
Tags performance mysql linux myisam