MyISAM tem diferentes tipos de bloqueios. Um
SELECT
operação coloca um LER BLOQUEIO na mesa. Pode haver vários bloqueios de leitura ativos a qualquer momento, desde que não haja BLOQUEIOS DE ESCRITA ativos . Operações que modificam a tabela, por exemplo. INSERT
, UPDATE
, DELETE
ou ALTER TABLE
coloque um WRITE LOCK na mesa. O bloqueio de gravação só pode ser colocado em uma tabela quando não houver bloqueios de leitura ativos; Se houver bloqueios de leitura ativos, o MyISAM enfileira o bloqueio de gravação para ser ativado assim que todos os bloqueios de leitura ativos expirarem. Da mesma forma, quando há um bloqueio de gravação ativo, tentar colocar um bloqueio de leitura em uma tabela enfileirará o bloqueio (e a consulta associada) até que os bloqueios de gravação tenham expirado na tabela.
Em última análise, tudo isso significa que:
- Você pode ter qualquer número de bloqueios de leitura ativos (também chamados de bloqueios compartilhados)
- Você só pode ter um bloqueio de gravação ativo (também chamado de bloqueio exclusivo)
Para obter mais informações, consulte:http://dev.mysql. com/doc/refman/5.5/en/internal-locking.html