Eu uso SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
na maioria das minhas consultas SQL gerais, principalmente porque isso foi detalhado para mim quando originalmente aprendi a linguagem.
Do meu entendimento, esse nível de isolamento age da mesma maneira que WITH (NO LOCK)
, no entanto, eu só costumo usar arquivos SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
.
- Existe algum momento que eu deveria estar usando
WITH (NO LOCK)
maisSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
. - Isso
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
impede que outros usuários sejam bloqueados nas tabelas que estou lendo? - Se
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
é usado para parar bloqueios, mas estou apenas lendo dados, qual é o sentido de usá-lo? São apenas as consultas intensivas do sistema que gerariam bloqueios? Vale a pena usá-lo ao executar consultas que retornariam em, digamos, 5 a 10 segundos? - Foi-me dito para não usar
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
ao ler dados que seriam usados em atualizações, presumivelmente para evitar a atualização de dados sujos. Seria este o único motivo? - Com o tipo de banco de dados em que estou trabalhando, existe um ambiente de produção e teste. Raramente estaremos consultando o ambiente de produção, mas quando preciso, geralmente estarei usando
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
em minha consulta. Eu entendo que leituras sujas são possíveis com isso. Além de receber dados de volta que podem não ser confirmados no banco de dados (e, portanto, descartar meus resultados), que outros tipos de 'leituras sujas' poderiam ser possíveis?
Desculpe as perguntas em massa.