Compartilhar via


Níveis de isolamento com base no controle de versão de linha no Mecanismo de Banco de Dados

O MicrosoftMecanismo de Banco de Dados do SQL Server apresenta uma nova implementação de um nível de isolamento da transação existente, confirmado por leitura, que fornece um instantâneo no nível da instrução usando o controle de versão de linha. O Mecanismo de Banco de Dados do SQL Server também apresenta um novo nível de isolamento da transação, instantâneo, que fornece um instantâneo no nível da transação que também usa controle de versão de linha.

O isolamento confirmado por leitura que usa controle de versão de linha é habilitado pela configuração da opção de banco de dados READ_COMMITTED_SNAPSHOT como ON. O isolamento do instantâneo é habilitado pela configuração da opção de banco de dados ALLOW_SNAPSHOT_ISOLATION como ON. Quando qualquer opção é habilitada para um banco de dados, o Mecanismo de Banco de Dados mantém versões de cada linha modificada. Sempre que uma transação modifica uma linha, uma imagem da linha antes da modificação é copiada em uma página no armazenamento de versão. O armazenamento de versão é uma coleção de páginas de dados em tempdb. Se várias transações modificarem uma linha, várias versões da linha serão vinculadas em uma cadeia de versão. As operações de leitura que usam o controle de versão de linha recuperam a última versão de cada linha confirmada quando a transação ou instrução foi iniciada.

Os aplicativos gravados para o SQL Server 2000 ou aqueles que são novos para o SQL Server, implementam o isolamento confirmado por leitura usando o controle de versão de linha que especifica o nível de isolamento de transação confirmada por leitura quando a opção de banco de dados READ_COMMITTED_SNAPSHOT é ON. Todas as operações de leitura exibem versões de linha que foram confirmadas no momento em que a instrução foi iniciada. Isso fornece um instantâneo dos dados no nível da instrução.

Os aplicativos gravados para o SQL Server implementam o isolamento de instantâneo especificando o nível de isolamento da transação de instantâneo quando a opção do banco de dados ALLOW_SNAPSHOT_ISOLATION é ON. Todas as operações de leitura em uma transação de instantâneo exibem versões de linha que foram confirmadas no momento em que a transação foi iniciada. Isso fornece um instantâneo dos dados no nível da transação.

Para transações que usam um nível de isolamento baseado no controle de versão de linha, as operações de leitura não solicitam bloqueios compartilhados nos dados. Isso significa que os leitores que usam controle de versão de linha não bloqueiam outros leitores ou gravadores que estiverem acessando os mesmos dados. Da mesma maneira, os gravadores não bloqueiam os leitores. Porém, os gravadores bloquearão uns aos outros até mesmo durante a execução em níveis de isolamento com base em controle de versão de linha. Duas operações de gravação não podem modificar os mesmos dados ao mesmo tempo.

A tabela seguinte descreve os tópicos que fornecem mais informações sobre níveis de isolamento com base em controle de versão de linha.

Tópico

Descrição

Compreendendo níveis de isolamento com base em controle de versão de linha

Descreve os conceitos de controle de versão de linha.

Escolhendo níveis de isolamento baseados em controle de versão de linha

Descreve os benefícios e os custos do controle de versão de linha, e fornece recomendações para os cenários mais adequados ao controle de versão de linha.

Habilitando níveis de isolamento baseados em controle de versão de linha

Descreve as opções que habilitam o controle de versão de linha em um banco de dados.

Usando níveis de isolamento com base em controle de versão de linha

Descreve as limitações dos níveis de isolamento com base em controle de versão de linha.

Uso do recurso de controle de versão de linha

Descreve o impacto no sistema do controle de versão de linha, e explica as DMVs (Exibições de Gerenciamento Dinâmico) e os contadores de desempenho que retornam informações sobre o estado do controle de versão de linha em bancos de dados e transações.