Métodos
Três tipos principais:
Mecanismos de locking
Mecanismos de etiquetagem
Métodos optimistas
Os dois primeiros são preventivos pois o objectivo é permitir a execução concorrente de transações até onde for possível e evitar operações que provoquem interferências entre transações.
O último é optimista porque parte do princípio que as interferências são raras:
Se verificar que existiram elementos comuns nas transações concorrentes, estas são rollbacked e reiniciadas.
Mecanismos de Etiquetagem
Quando a transação se inicia é-lhe atribuída uma etiqueta com um número sequencial de chegada ao sistema.
Sempre que uma transação acede a um elemento (R ou W), marca-o com a sua etiqueta.
Situação de conflito:
Quando uma transação tenta aceder a um elemento cuja valor da etiqueta é superior ao seu...
i.e. foi acedido por uma transação que se iniciou mais tarde
... a transação é desfeita e reiniciada com um novo número de etiqueta.
Mecanismos de Locking
Trata-se de um mecanismo muito conhecido/utilizado.
Lock é uma variável associada a determinado elemento da base de dados que, de acordo com o seu valor no momento, permite ou não ser acedido.
para obter o acesso (R ou W) a um elemento é necessário obter previamente o lock desse elemento.
locks binários: 1 – locked; 0 - unlocked
problema: só permitem acessos exclusivos
lock leitura/escrita (r/w) (r locked; w locked; unlocked)
apenas os acessos para escrita são exclusivos
Os locks são libertados no fim da transação (COMMIT ou ROLLBACK)
Obriga a implementação de regras que evitem problemas de deadlock.
As transações bloqueiam-se mutuamente. Cada uma fica eternamente à espera que a outra liberte o recurso pretendido.
SQL Server suporta vários tipos de locks.
Last updated