gra*_*l8d 9 sql-server-2008 sql-server locking snapshot-isolation
我LCK_M_S在使用 RCSI时看到等待共享锁 ( )。我的理解是这不应该发生,因为SELECTs在使用 RCSI 时不需要共享锁。
我怎样才能看到共享锁?是因为外键吗?
Pau*_*ite 14
我怎样才能看到共享锁?是因为外键吗?
是的。当为了验证外键约束而访问表时,SQL Server 恢复到已提交读隔离级别的锁定实现。这是正确性所必需的,并且不能被禁用。
该行为仅适用于数据修改语句。只有在检查外键相关数据时才会使用共享锁。同一执行计划中的其他数据访问可以继续使用行版本控制。
如果 SQL Server 没有这样做,则下面的数据修改语句RCSI最终可能会违反外键约束,因为完整性检查使用了过时(版本化)数据。
不幸的是,目前没有支持的方法来查看执行计划中锁定行为的这种变化。当跟踪标志 8607 处于活动状态时,可以看到内部锁定提示。
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |