Jer*_*oen 7 sql-server ssrs locking
一些上下文:
起初我们只是“直接”编写报告,在查询中没有任何锁定提示。对于较大的报告,这有时会导致锁定问题。在第一,我们通过使用补救这WITH (NOLOCK)
提示在查询表。
因为(a)它是相当突兀,和(b)很容易忘记一个表的提示,我们搬到了第二种方法设置TRANSACTION ISOLATION LEVEL
到READ UNCOMMITTED
每个数据集的查询的顶部(这是罚款)。
正如您可能猜到的,忘记其中一个数据集的提示仍然很容易。所以这就引出了一个问题:
问题:与报告查询一起发送NOLOCK
提示的选项有哪些?
附注。我意识到这在某种程度上是一个XY 问题(我对 X 有很多其他选择,例如优化查询,不报告操作数据库等),但仍然试图使其成为一个有效的问题.
选项:
以下是上面提到的选项,添加了一些我很好奇它们是否可行的选项:
WITH (NOLOCK)
为每个表设置提示。(突兀,很容易忘记)READ UNCOMMITTED
为整个查询设置隔离级别。(还是很容易忘记)哪些选项是可行的?有没有我错过的选项?
您是否考虑READ_COMMITTED_SNAPSHOT
过数据库的行版本控制?
Kim Tripp 在http://msdn.microsoft.com/en-us/library/ms345124%28v=sql.90%29.aspx 上有一篇关于它的好文章
READ_COMMITTED_SNAPSHOT
允许更好的功能WITH (NOLOCK)
,因为它为长时间运行的聚合或查询提供了绝对的时间点一致性,因为减少了锁争用而增加了吞吐量。
快速回答:
如果报告已优化但仍然存在问题,则有几个选项是可行的:
归档时间: |
|
查看次数: |
2979 次 |
最近记录: |