Tempo aproximado para leitura: 00:01:00 min
Dúvida
Quais recomendações devo seguir sobre o nível de isolamento no SQL Server?
Ambiente
Framework - Framework (Linha RM) - Banco de Dados - Todas as versões
Solução
As transações realizadas no banco de dados possuem um nível de isolamento, que determina o grau em que a transação será isolada das demais transações. Os níveis de isolamento controlam, por exemplo, se serão feitos bloqueios quando os dados são lidos, que tipo de bloqueio é necessário, e por quanto tempo estes bloqueios serão mantidos.
Para melhor aproveitamento do sistema RM, recomendamos a utilização do nível de isolamento read committed default, usando controle de versões de linha, ou seja, com o parâmetro da base de dados read_committed_snapshsnapshotot ativado.
Esta alteração traz os seguintes benefícios:
- As operações de leitura terão um resultado consistente no banco de dados.
- Os comandos select não bloquearão dados durante uma operação de leitura (os leitores não bloqueiam os gravadores e vice-versa).
- Os comandos select podem acessar o último valor confirmado da linha, enquanto outras transações estão atualizando a linha sem serem bloqueadas.
- O número de deadlocks é reduzido.
- O número de bloqueios exigido por uma transação é reduzido, o que diminui a sobrecarga do sistema requerida pelo gerenciamento de bloqueios.
- Ocorrem menos escalações de bloqueio.
Com o nível de isolamento read committed usando controle de versão de linha - read_committed_snapshsnapshotot como on, o SQL Server terá o mesmo comportamento que o Oracle, para bloqueios de leitura. A configuração deste parâmetro não causa perda de integridade no banco de dados e pode ser revertido se necessário.
Abaixo a sintaxe do comando para ativar o nível de isolamento read committed com controle de versionamento de linha. Esta configuração está disponível a partir do SQL Server 2005.
É importante observar que durante a execução do comando, não pode haver nenhuma outra conexão com a base de dados:
ALTER DATABASE <nome da base> SET READ_COMMITTED_SNAPSHOT ON
GO
Saiba mais
Acesse o link da Microsoft para maiores informações referente as Noções básicas sobre níveis de isolamento
1 Comentários