在使用RCSI时,我看到等待共享锁(LCK_M_S)。我的理解是,这是不应该发生的,因为SELECTs在使用RCSI时不需要共享锁。
我怎么能看到共享锁?是因为外键吗?
发布于 2014-04-18 03:57:21
我怎么能看到共享锁?是因为外键吗?
是。SQL Server在访问表以验证外键约束时恢复到读提交隔离级别的锁定实现。这是正确性所必需的,不能禁用。
这种行为只适用于数据修改语句。只有在检查外键相关数据时才使用共享锁。同一执行计划中的其他数据访问可以继续使用行版本控制。
如果Server不这样做,RCSI下的数据修改语句可能会违反外键约束,因为完整性检查使用过期(版本)数据。
不幸的是,目前还没有支持的方法来查看执行计划中锁定行为的这种变化。当跟踪标志8607处于活动状态时,可以看到内部锁定提示。
https://dba.stackexchange.com/questions/39628
复制相似问题