此处找到的SQL Server隔离级别列表指出,在事务内获取的写锁将保留到事务结束。但是,它没有提及何时获得这些锁。
默认情况下是否在事务开始时或仅在需要时获取锁?如果后者为真,那么在大型事务中尽可能晚执行写操作以最小化持有X锁的时间量是否有利?
此处找到的SQL Server隔离级别列表指出,在事务内获取的写锁将保留到事务结束。但是,它没有提及何时获得这些锁。
默认情况下是否在事务开始时或仅在需要时获取锁?如果后者为真,那么在大型事务中尽可能晚执行写操作以最小化持有X锁的时间量是否有利?
Answers:
默认情况下是否在事务开始时或仅在需要时获取锁?
在读取或写入发生之前立即获取锁。根据存储引擎选择的锁定粒度,可以在行,页面,分区或对象(表)级别获取锁。
如果后者为真,那么在大型事务中尽可能晚执行写操作以最小化持有X锁的时间量是否有利?
是的,根据并发事务使用的隔离级别,这对于并发可能是有利的。
相关阅读: