Bom, para não desperdiçar tempo então vou fazer um POST sobre TRANSAÇÕES em banco de dados.
|
Dirty Read
|
Nonrepeatable Read
|
Phatom Read
|
Read Uncommited
|
sim
|
sim
|
sim
|
Read Commited
|
não
|
sim
|
sim
|
Repeteable Read
|
não
|
não
|
sim
|
Serializable
|
não
|
não
|
não
|
Níveis de Isolamento
Serializable => O maior nível de isolamento. Na prática é como se as transações executassem em série, então não acontecem fenômenos indesejados de acesso concorrente. Porém, não é possível executar transações que não possam ser serializadas paralelamente.
Repeatable Read => Nesse cenário podem acontecer Phatom Reads.
Read Commited => Enxerga os dados comitados antes da transação iniciar e também os dados modificados pela própria transação atual. Porém nunca os dados modificados não-confirmados por outras transações. Se os dados de outras transações forem confirmados então a transação atual pode ler, nesse caso permitindo Repeatable Read.
Read Uncommited => Aqui a bagaça tá feita. Transações podem ler dados ainda não confirmados então a Dirty Read pode acontecer. Se a transação com os dados não comitados falhar então temos algo inconsistente.
No PGSQL, ná prática, só há 2 níveis de isolamento: Serializable ( que inclui o Repeatable Read) e o Read Commited.
Fenômenos Indesejados
Dirty Read => Um transação pode ler dados de outra transação não confirmada.
Norepeatable Read => Uma transação lê os dados, então volta a ler os dados de novo e descobre que os dados foram modificados.
Phantom Read => A pessoa faz um SELECT e retorna um número de linhas. Faz outro SELECT de novo um obtêm um outro número de linhas.
Atualização Perdida => Ocorre quando duas transações acessam o mesmo item de dados ao mesmo tempo e fazem alguma operação com os dados e depois escrevem esse dado.
X = X + 10;
write (X),;
Imediatamente depois outra faz:
X = X-10;
write(X);
Controle de Concorrência Garante o Isolamento.
No comments:
Post a Comment