Quais são os benefícios do bloqueio de nível de tabela usado pelo mecanismo de armazenamento MyISAM? O bloqueio de nível de linha tem muitos benefícios, como atualizações simultâneas e leituras que não bloqueiam a tabela.
Editar É amplamente considerado que o bloqueio no nível da tabela evita bloqueios. Mas como a prevenção de impasses ao custo da simultaneidade vale a pena?
Como o mysql agenda as consultas para execução desta maneira:
Quais são os benefícios ?
Deadlocks nunca podem ocorrer com MyISAM. O servidor MySQL pode, assim, gerenciar toda a contenção, explícita (LOCK TABLEs) ou implícita (Any DML).
Desde que uma tabela MyISAM não tenha registros excluídos ou atualizados, inserções simultâneas podem ocorrer livremente com impunidade. Isso incluiria, de fato, INSERTs em uma tabela que possui um bloqueio de leitura explícito.
Para qualquer tabela com lacunas, a execução de OPTIMIZE TABLE removeria essas lacunas e permitiria inserções simultâneas novamente.
Para obter mais informações, leia "Guia de estudo de certificação do MySQL 5.0" páginas 408-412 Seção 29.2 .
O MyISAM não tem deadlock, mas, de certa forma, o deadlock é uma melhoria em relação ao bloqueio em nível de tabela.
Quando você está tentando INSERT/UPDATE/DELETE de uma tabela bloqueada, você precisará esperar até que esteja disponível ou até obter um tempo limite (por padrão 28800 segundos). Com o deadlock em um mecanismo de bloqueio em nível de linha, você espera um pouco se não estiver livre e se o servidor detectar uma espécie de "loop infinito" - onde 2 conexões não desistirão de uma linha - ele rejeitará ambas as conexões rapidamente e dar um impasse.
Se você está tentando resolver o impasse, sugiro que observe as seguintes coisas:
Um table-lock (como o usado pelo MyISAM) está livre de problemas de deadlock .
Dois benefícios.
uma. Bloquear tabelas é um exemplo de algoritmo de força bruta para resolver o problema de deadlocks. A força bruta sempre funciona, para valores adequados de "funciona".
b. Você, sem dúvida, tomará decisões diferentes à medida que adquirir conhecimento de engenharia e julgamento estético. Isso não afeta a validade de "a" acima.