Aqui está uma para os gurus do SQL Server: se eu definir meu nível de isolamento de transação do SQL Server 2008 como READ UNCOMMITTED
, isso também afetará as páginas de índice?
Por exemplo, usando ISOLATION LEVEL READ UNCOMMITTED
, que efeito (se houver) o ALLOW_PAGE_LOCKS
ou ALLOW_ROW_LOCKS
em um índice tem?
ALTER INDEX IX_FirstName ON Employee
SET (ALLOW_PAGE_LOCKS=OFF, ALLOW_ROW_LOCKS=OFF)
Não consigo encontrar uma resposta definitiva em nenhum lugar - a documentação do MSDN sobre os níveis de isolamento da transação realmente fala apenas sobre as páginas de dados ....
Não. Não afeta em nada a gestão interna do SQL Server. Você está configurando essa conexão para você, para suas consultas. O SQL Server gerencia seu próprio bloqueio à sua maneira.
Por que você desativaria o bloqueio de página e linha em um índice? É mais provável que você veja um bloqueio mais severo do que se permitir que o SQL Server gerencie esse índice como achar melhor. Definindo ambos os valores como OFF, você acabou de dizer ao SQL Server para bloquear uma tabela. Considerando que você também está mexendo com read_uncommitted, aposto que você não quer isso.
Se você está perguntando se read_uncommitted permite que você obtenha leituras sujas em índices, sim. Sim.