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