Niveis de Isolamento – MySQL

Ola pessoal,

Daremos continuidade ao assunto de transação, porém agora falando dos níveis de isolamento e os possíveis problemas.

O padrão SQL define quatro níveis de isolamento de transação, com o intuito de evitar três fenomenos indesejados em transações simultaneas. Assumimos que um ambiente de produção pode ter várias transações simultâneas, no mínimo uma por sessão.

Com isso, é possível que ocorra a:

– Leitura suja: Suponhamos que a transação “A” modifique algum campo da tabela, porém que ainda não o tenha commitado. Se uma transação “B” efetua um select nesta campo e ve o valor modificado pela transação “A” sem ter o commit efetuado, essa é uma leitura suja.

Isso é um problema em ambientes de tomada de decisão, Relatórios entre outros, pois caso a transação “A” sofra um Rollback, a transação “B” não saberá disso e ja tera informado o valor “erroneo”.

Leitura não repetitiva: Ocorre quando um select(leitura) reproduz resultados diferentes quando ela é repetida posteriormente na mesma transação.

Exemplo: A transação “A” le o valor de um campo. Se outra transação “B” atualizar este valor e commita-lo no banco, caso a transação “A” volte a consultar o mesmo campo, ela trará o valor comitado pela transação “B”, ou seja, trata valores diferentes do mesmo campo na mesma transação executada.

Isso é grave caso você opte por alterar algum registro com a condição de um campo x, onde ele pode assumir um valor y em seguida.
Continue lendo