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 retidos 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 as operações de gravação o mais tarde possível para minimizar a quantidade de tempo que os bloqueios X são mantidos?
Os bloqueios são adquiridos imediatamente antes de ocorrer a 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).
Sim, pode ser vantajoso para simultaneidade, dependendo do nível de isolamento em uso por transações simultâneas.
Leitura relacionada: