【问题标题】:NOLOCK HINTS IN REPORT Stored Procedures报告存储过程中的 NOLOCK 提示
【发布时间】:2015-08-13 05:47:22
【问题描述】:

我们有一些 SSRS 报告在处理大量数据时运行缓慢。

我们考虑在报告中对后端存储过程进行一些查询优化。

我的问题是,在存储过程中(仅在 select 语句中)添加 (nolock) 提示是否可以用于报告目的?

【问题讨论】:

  • Bad Habits to kick - putting NOLOCK everywhere - 不推荐在任何地方使用它 - 恰恰相反!因此,这实际上取决于您的报告需要有多准确 - 如果您可以显示最终可能不会在数据库中结束的数据 - 然后使用 NOLOCK。如果您需要准确的报告,不要使用 NOLOCK ...
  • 您是否确信查询性能因锁定而下降?
  • 使用 NOLOCK 提示后性能得到改善。但数据准确性非常重要

标签: sql-server tsql reporting-services


【解决方案1】:

当然,数据库锁对于确保您不会在交易中获得“脏”数据很重要。不过,在某些情况下您可以安全地使用 NOLOCK。例如,如果您必须使用游标(最好避免,但有时是必要的),则可以将游标写入它,在 NOLOCK 条件下只拾取最小的关键字段,然后在循环中根据需要读取表(使用锁) 使用光标字段值,执行您的更改、提交并移动到下一个光标 rec 以获得下一组键(在 nolock 下)。如果使用得当,它是一种资产。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多