Sobes.tech
Middle

Que tipos de bloqueios existem no SQL?

sobes.tech IA

Resposta da IA

Tipos de bloqueios em SQL:

  • Por nível:

    • Bloqueio de tabela (Table Locks): Bloqueia toda a tabela. Fácil de implementar, mas pode reduzir significativamente o paralelismo. Adequado para operações que modificam toda a tabela (por exemplo, ALTER TABLE).
    • Bloqueio de linhas (Row Locks): Bloqueia linhas individuais. Proporciona alto paralelismo, mas requer mais recursos para gestão. Usado por padrão na maioria dos SGBDs para INSERT, UPDATE, DELETE.
  • Por tipo de acesso:

    • Bloqueio partilhado (Shared Lock - S Lock): Permite que várias transações leiam dados simultaneamente, mas impede escrita por outras.
    • Bloqueio exclusivo (Exclusive Lock - X Lock): Permite que apenas uma transação aceda aos dados (para leitura e escrita) e bloqueia as demais.
    • Bloqueio de intenção (Intention Lock): Indica ao SGBD que as transações planeiam estabelecer um bloqueio a um nível inferior (linhas ou tabelas). Por exemplo, IS (Intention Shared), IX (Intention Exclusive). Ajuda o SGBD a verificar rapidamente a compatibilidade dos bloqueios.
  • Outros tipos:

    • Bloqueio de intervalo (Range Lock): Bloqueia um intervalo de linhas num índice. Usado para prevenir leitura fantasma.
    • Bloqueio de metadados (Metadata Lock): Bloqueia os metadados do objeto (tabela, visualização, etc.). Usado ao executar operações DDL.

A compatibilidade de bloqueios determina se várias transações podem manter simultaneamente certos tipos de bloqueios num mesmo objeto.

Tipo de bloqueio S X IS IX
S Sim Não Sim Não
X Não Não Não Não
IS Sim Não Sim Sim
IX Não Não Sim Sim