我继承了托管Hyperion数据库的Server 2012实例。我相信Hyperion技术配置了这个系统,他们同时拥有READ_COMMITTED_SNAPSHOT ON和ALLOW_SNAPSHOT_ISOLATION ON。这对我来说毫无意义。说得通吗?
另外,我看到60%-70%的等待是Lock_M_X,这比我见过的要高得多。想知道这是否与上述情况有关。
我已经在一个表中运行了1分钟的sp_whoisactive快照,并且无法捕获一个X类型的锁。出现了合理数量的S型锁。
有什么建议吗?
发布于 2016-12-20 16:45:16
从先前的回答来看:
如果使用
ALLOW_SNAPSHOT_ISOLATION,请确保在代码中使用SET TRANSACTION ISOLATION LEVEL SNAPSHOT,否则将得不到任何好处。如果您设置了SET READ_COMMITTED_SNAPSHOT ON,那么就没有必要修改任何代码。MS SQL Server自动为该表应用快照隔离。
基本上,仅使用ALLOW_SNAPSHOT_ISOLAION,仍然必须在query/SP中指定隔离级别,以使其使用该隔离级别。
当READ_COMMITTED_SNAPSHOT设置为ON时,DB将自动处于该模式,因此不需要修改查询。
在我上面链接到的答案中,有一个链接指向Kim关于快照隔离的视频。这是纯金。
https://dba.stackexchange.com/questions/158717
复制相似问题