Serializable Vs Snapshot Isolation

Já aqui tinha falado sobre níveis de isolamento da base de dados, neste post irei explicar as principais diferenças entre o Serializable e o Snapshot Isolation, enunciando as principais vantagens de cada um.

Antes de mais, uma breve explicação do que consiste o Snapshot Isolation. Em base de dados, o nível de isolamento Snapshot, consiste em permitir as transacções operar sobre um imagem da base de dados (daí o nome snapshot), garantindo assim que todas as operações realizadas por uma transacção irão “ver” uma versão consistente da base de dados e apenas irá submeter as mudanças efectuadas se não foi feita nenhuma alteração concorrente desde o momento do snapshot. Caso duas transacções concorrentes modifiquem os mesmos dados, uma delas vai ter que falhar e fazer roll-back, começando do inicio.

Tanto o nível Serializable e o Snapshot Isolation oferecem consistência durante uma transacção, são as duas seguras não permitindo nenhum dos fenómenos indesejados falados no post anterior, a diferença entre os dois é que o Snapshot Isolation é um método de controlo de concorrência optimista enquanto o Serializable é pessimista, isto porque o snapshot parte do principio que não irá ocorrer conflitos entre transacções, e caso haja cancela a transacção e faz rollback, permitindo assim um elevado nível de concorrência, já o Serializable é pessimista porque parte do principio que vai ocorrer muitos conflitos causado pelo acesso aos dados, logo impede transacções concorrentes garantindo a consistência mas reduzindo a concorrência. Destes dois métodos o Snapshot Isolation é mais eficaz pois o Serializable adquire range-locks de maneira a garantir que mais nenhuma transacção concorrente vai aceder aos mesmos dados o que diminui muito o desempenho, pois como já foi dito, apesar de garantir consistência diminui drasticamente a concorrência. Já o Snapshot Isolation por sua vez não adquire qualquer lock de dados, em vez disso a transacção trabalho sobre uma imagem da base de dados tirado no inicio da transacção, permite portanto o máximo nível de concorrência, caso duas transacções modifiquem os mesmo dados ao mesmo tempo, uma delas vai ter que falhar e fazer roll-back.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

%d bloggers like this: