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 atualizadaComo 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.