ScholarGate
Assistente

Níveis de Isolamento

Os níveis de isolamento definem o quanto uma transação é protegida dos efeitos de outras transações concorrentes, trocando algumas garantias de isolamento por maior concorrência e throughput.

Encontrar tema com PaperMindEm breveFind papers & topics
Tools & resources
Baixar slides
Learn & explore
VídeoEm breve

Definition

Um nível de isolamento é uma especificação de quais anomalias de concorrência uma transação pode observar; níveis mais altos previnem mais anomalias (até a serializabilidade completa) ao custo de concorrência reduzida, enquanto níveis mais baixos permitem certas anomalias em troca de desempenho.

Scope

Este tópico aborda os níveis de isolamento padrão — leitura não confirmada (read uncommitted), leitura confirmada (read committed), leitura repetível (repeatable read) e serializável (serializable) — definidos em termos dos fenômenos (leitura suja, leitura não repetível, fantasma) que cada um permite ou previne, a crítica influente que os reformulou em termos de anomalias permitidas, e o isolamento de snapshot (snapshot isolation) praticamente importante e suas anomalias, como o desvio de escrita (write skew). Ele trata do trade-off entre consistência e concorrência. Exclui os mecanismos subjacentes de bloqueio e multiversão que implementam esses níveis.

Core questions

  • Quais anomalias — leitura suja, leitura não repetível, fantasma — cada nível de isolamento permite?
  • Como o padrão SQL define os quatro níveis de isolamento?
  • Por que os pesquisadores criticaram as definições baseadas em anomalias como ambíguas?
  • Onde o isolamento de snapshot se encaixa, e quais anomalias (como o desvio de escrita) ele pode permitir?
  • Como as aplicações escolhem um nível de isolamento para uma determinada carga de trabalho?

Key concepts

  • leitura não confirmada
  • leitura confirmada
  • leitura repetível
  • serializável
  • leitura suja
  • leitura não repetível
  • leitura fantasma
  • isolamento de snapshot e desvio de escrita

Key theories

Níveis de isolamento baseados em anomalias
O padrão SQL define os níveis de isolamento por quais dos três fenômenos — leituras sujas, leituras não repetíveis e fantasmas — eles permitem, variando de leitura não confirmada (todos permitidos) a serializável (nenhum permitido).
Crítica aos níveis de isolamento ANSI
Berenson e colegas mostraram que as definições baseadas em fenômenos do padrão são ambíguas e não caracterizam claramente os sistemas multiversão, e eles introduziram o isolamento de snapshot como um nível distinto e amplamente implementado, não capturado pelas definições originais.
Isolamento de snapshot e suas anomalias
Sob o isolamento de snapshot, cada transação lê um snapshot consistente a partir do seu início, proporcionando um forte comportamento de leitura sem bloqueios de leitura, mas pode permitir anomalias não serializáveis, como o desvio de escrita, motivando o isolamento de snapshot serializável.

Clinical relevance

O nível de isolamento é uma escolha de configuração rotineira, mas consequente, para desenvolvedores de aplicativos: escolher um nível muito fraco pode corromper dados silenciosamente através de anomalias sutis, enquanto usar sempre o serializável pode estrangular o throughput, portanto, entender os níveis é essencial para aplicações transacionais corretas e de alto desempenho.

History

O padrão ANSI/ISO SQL definiu os níveis de isolamento em termos de fenômenos permitidos. A crítica de 1995 de Berenson, Bernstein, Gray e os O'Neils expôs ambiguidades nessas definições e caracterizou o isolamento de snapshot, que os bancos de dados multiversão convencionais adotaram. Trabalhos posteriores definiram o isolamento de snapshot serializável para fechar a lacuna de anomalias restante.

Debates

Definindo o isolamento por anomalias versus por serializabilidade
As definições da lista de anomalias do padrão são fáceis de declarar, mas ambíguas e não se encaixam em sistemas multiversão; uma alternativa é definir a correção diretamente via serializabilidade, o que é mais limpo, mas mais difícil de mapear para os níveis que os desenvolvedores configuram na prática.

Key figures

  • Jim Gray
  • Philip Bernstein
  • Hal Berenson

Related topics

Seminal works

  • berenson1995
  • gray1992

Frequently asked questions

Qual a diferença entre uma leitura não repetível e uma leitura fantasma?
Uma leitura não repetível ocorre quando uma transação lê a mesma linha duas vezes e vê valores diferentes porque outra transação a atualizou no meio. Uma leitura fantasma ocorre quando uma transação executa novamente uma consulta com uma condição de busca e vê novas linhas que outra transação inseriu. A leitura repetível previne a primeira; apenas o serializável previne fantasmas de forma confiável.
O isolamento de snapshot é o mesmo que serializável?
Não. O isolamento de snapshot oferece a cada transação um snapshot consistente e previne leituras sujas e não repetíveis, mas não é totalmente serializável: ele permite anomalias de desvio de escrita, onde duas transações leem dados sobrepostos e fazem atualizações disjuntas que, juntas, violam uma restrição. O isolamento de snapshot serializável o estende para eliminar tais anomalias.

Methods for this concept

Related concepts