SQL Server 何时获取锁?

Lev*_*lho 10 sql-server deadlock transaction locking blocking

此处找到的 SQL Server 中的隔离级别列表指出,在事务中获取的写锁将保留到事务结束。但是,它没有提及有关何时获取这些锁的任何信息。

默认情况下,锁是在事务开始时获取还是在需要时获取?如果后者为真,那么在大型事务中尽可能晚地执行写操作以最小化持有 X 锁的时间是否有利?

Pau*_*ite 5

默认情况下,锁是在事务开始时获取还是在需要时获取?

在读取或写入发生之前立即获取锁。根据存储引擎选择的锁定粒度,可以在行、页、分区或对象(表)级别获取锁。

如果后者为真,那么在大型事务中尽可能晚地执行写操作以最小化持有 X 锁的时间是否有利?

是的,它可能有利于并发,具体取决于并发事务使用的隔离级别。

相关阅读: