Quando o SQL Server adquire bloqueios?

10

A lista de níveis de isolamento no SQL Server encontrada aqui afirma que os bloqueios de gravação adquiridos em uma transação são mantidos até o final da transação. No entanto, não menciona nada sobre quando esses bloqueios são adquiridos.

Os bloqueios são adquiridos por padrão no início de uma transação ou apenas quando são necessários? Se o último for verdadeiro, seria vantajoso, em grandes transações, executar operações de gravação o mais tarde possível, a fim de minimizar a quantidade de tempo que os bloqueios X são mantidos?

Levi Botelho
fonte

Respostas:

5

Os bloqueios são adquiridos por padrão no início de uma transação ou apenas quando são necessários?

Os bloqueios são adquiridos imediatamente antes da leitura ou gravação. Dependendo da granularidade de bloqueio selecionada pelo mecanismo de armazenamento, os bloqueios podem ser adquiridos no nível de linha, página, partição ou objeto (tabela).

Se o último for verdadeiro, seria vantajoso, em grandes transações, executar operações de gravação o mais tarde possível, a fim de minimizar a quantidade de tempo que os bloqueios X são mantidos?

Sim, pode ser vantajoso para simultaneidade, dependendo do nível de isolamento em uso pelas transações simultâneas.

Leitura relacionada:

Paul White 9
fonte