Como descobrir quem está trancando uma mesa em MySQL

Como descobrir quem está trancando uma mesa em MySQL
Um bloqueio MySQL refere -se a uma bandeira de trava conectada a uma tabela. O principal uso dos bloqueios do MySQL está em sessões de usuário para impedir que outras sessões de usuário acessem a tabela durante uma sessão ativa. Uma sessão específica do MySQL só pode acessar seus bloqueios e não bloqueios associados a outros clientes.

Depois que uma tabela é bloqueada em uma sessão específica, outras sessões não podem ler ou escrever na tabela, a menos que o bloqueio da sessão seja liberado. Portanto, todas as outras sessões estão no modo de espera até que a fechadura seja liberada.

Este curto guia mostrará como mostrar os bloqueios disponíveis usando o comando Show Process List Command.

Como bloquear uma mesa

Para adquirir um estado de bloqueio em uma tabela específica, você pode usar a declaração de tabelas de bloqueio. A sintaxe geral para o bloqueio de tabelas é:

MySQL> Tabelas de bloqueio tb_name [Lock_type]

No tipo de bloqueio, você pode especificar o bloqueio de leitura ou leitura. O exemplo abaixo define o bloqueio de gravação na tabela do ator.

Tabelas de trava Sakila.ator leia;

Depois de ter o Lockset, todas as outras sessões não atualizarão nenhum dado armazenado na tabela.

Por exemplo, a seguinte declaração falhará a menos que a tabela seja desbloqueada.

Insira em Sakila.ator (primeiro_name, last_name, last_update) valores ('hello', 'World', current_date ());

O MySQL lhe dará um erro de leitura como:

Erro 1099 (hy000): Tabela 'ator' foi trancada com uma trava de leitura e não pode ser atualizada

Como desbloquear uma mesa

Para desbloquear uma tabela, use a consulta de tabelas de desbloqueio como:

MySQL> Tabelas de desbloqueio;

Mostre mesas trancadas

Por padrão, não existe uma maneira definitiva de consultar para mostrar a mesa trancada como: (Mostrar tabelas bloqueadas;).

No entanto, podemos usar um comando de lista de processo para mostrar as tabelas bloqueadas e os usuários.

Use o comando:

Mostrar Lista de Processos;

Isso despejará as informações e as consultas esperando para travar.

O exemplo acima mostra o usuário root bloqueando a tabela na tabela de ator.

Conclusão

Este curto tutorial mostrou como travar e desbloquear tabelas e ver os usuários que têm uma tabela bloqueada em um banco de dados.