Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

níveis de isolamento e bloqueio inno db


O InnoDB define tipos específicos de bloqueios da seguinte forma.

  • SELECT ... FROM é uma leitura consistente, lendo um instantâneo do banco de dados e não configurando nenhum bloqueio, a menos que o nível de isolamento da transação seja definido como SERIALIZABLE. Para o nível SERIALIZABLE, a pesquisa define bloqueios de próxima chave compartilhados nos registros de índice que encontra.

  • SELECT ... FROM ... LOCK IN SHARE MODE define os bloqueios compartilhados da próxima chave em todos os registros de índice que a pesquisa encontra.

  • Para registros de índice que a pesquisa encontra, SELECT ... FROM ... FOR UPDATE bloqueia outras sessões de fazer SELECT ... FROM ... LOCK IN SHARE MODE ou de ler em determinados níveis de isolamento de transação. As leituras consistentes ignorarão quaisquer bloqueios definidos nos registros que existem na exibição de leitura.

  • UPDATE ... WHERE ... define um bloqueio de próxima tecla exclusivo em cada registro que a pesquisa encontra.

  • DELETE FROM ... WHERE ... define um bloqueio exclusivo da próxima tecla em todos os registros encontrados pela pesquisa.

  • INSERT define um bloqueio exclusivo na linha inserida. Esse bloqueio é um bloqueio de registro de índice, não um bloqueio de próxima tecla (ou seja, não há bloqueio de intervalo) e não impede que outras sessões sejam inseridas no intervalo antes da linha inserida.

O InnoDB possui vários tipos de bloqueios em nível de registro:

  • Bloqueio de registro:Este é um bloqueio em um registro de índice.

  • Bloqueio de intervalo:Este é um bloqueio em um intervalo entre registros de índice ou um bloqueio no intervalo antes do primeiro ou após o último registro de índice.

  • Bloqueio da próxima tecla:Esta é uma combinação de um bloqueio de registro no registro de índice e um bloqueio de intervalo no intervalo antes do registro de índice.

Ver mais :

Evitando o problema fantasma usando o bloqueio da próxima tecla

Evitando impasse