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