Transações em BD: ACID, Bloqueios e Concorrência
Classificado em Computação
Escrito em em português com um tamanho de 4,61 KB.
1. Propriedades das Transações (ACID)
As propriedades ACID garantem a confiabilidade das transações em um banco de dados. São elas:
- Atomicidade: A transação é indivisível, ou seja, ou todas as suas operações são executadas com sucesso, ou nenhuma é executada (tudo ou nada).
- Consistência: A transação deve levar o banco de dados de um estado válido para outro estado válido. A consistência pode ser violada temporariamente durante a transação, mas deve ser restaurada ao seu final.
- Isolamento: As transações devem ser executadas de forma isolada, como se fossem a única transação em execução no sistema. Uma transação não deve sofrer interferência de outras transações concorrentes.
- Durabilidade: Uma vez que a transação é confirmada (commit), as alterações feitas no banco de dados são permanentes e não podem ser perdidas, mesmo em caso de falha do sistema.
2. Bloqueios: Binário, Compartilhado e Exclusivo
Os bloqueios são mecanismos utilizados para controlar o acesso concorrente aos dados em um banco de dados. Existem diferentes tipos de bloqueios, cada um com suas características e finalidades:
- Bloqueio Binário: Possui dois estados: bloqueado (1) e desbloqueado (0). É muito restritivo e não permite nem mesmo duas leituras simultâneas no mesmo item. Na prática, é pouco utilizado devido à sua restrição.
- Bloqueio Compartilhado: Permite que várias transações acessem o mesmo item para leitura simultaneamente.
- Bloqueio Exclusivo: Utilizado para operações de escrita. Quando um item está bloqueado exclusivamente, nenhuma outra transação pode acessá-lo, nem para leitura nem para escrita, até que o bloqueio seja liberado.
3. Separação de Locks e Unlocks
É necessário separar os bloqueios (locks) dos desbloqueios (unlocks) para garantir a integridade dos dados e evitar problemas de concorrência. A separação adequada permite que o sistema gerencie corretamente o acesso aos dados e mantenha a consistência do banco de dados.
4. Abordagens Roubada e Forçada
- Roubada: Permite gravar os dados no disco antes mesmo do commit da transação. Isso pode melhorar o desempenho, mas aumenta o risco de ter que desfazer operações (rollback) em caso de falha.
- Forçada: Força a gravação dos dados no disco no momento do commit da transação. Isso garante a durabilidade, mas pode reduzir o desempenho.
5. Nível de Isolamento e Controle de Concorrência
O nível de isolamento define o grau em que uma transação deve estar isolada das outras transações concorrentes. O controle de concorrência é o conjunto de mecanismos que garantem esse isolamento, evitando problemas como leitura suja e linhas fantasmas.
6. Leitura Suja e Linhas Fantasmas
- Leitura Suja: Ocorre quando uma transação lê um item que foi escrito por outra transação, mas que ainda não foi confirmada (commit).
- Linhas Fantasmas: Ocorre quando uma transação repete uma leitura e obtém um conjunto de linhas diferente do obtido na primeira leitura, devido a inserções ou exclusões realizadas por outras transações concorrentes.
7. Tipos de Execução: Serial, Não Serial e Serializável
- Serial: As transações são executadas em série, uma após a outra. Isso garante o isolamento total, mas limita a concorrência.
- Não Serial: As transações são executadas de forma intercalada, aumentando a concorrência, mas também aumentando o risco de interferência entre elas.
- Serializável: As transações são executadas de forma intercalada (não serial), mas o resultado final é equivalente a uma execução serial. Isso permite concorrência e, ao mesmo tempo, garante o isolamento das transações.
8. Protocolo de Bloqueio de Duas Fases
O protocolo de bloqueio de duas fases é importante porque garante que as transações sejam serializáveis, permitindo um ambiente concorrente e mantendo o isolamento das transações. Quando esse protocolo é seguido, não é necessário verificar a serialização posteriormente.
9. Deadlock
Em caso de deadlock, o banco de dados deve abortar a transação que realizou menos atualizações, pois o rollback será mais rápido.