加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – NOLOCK总是坏的吗?

发布时间:2021-01-08 14:23:11 所属栏目:MsSql教程 来源:网络整理
导读:我是一名报告开发人员,希望尽可能提高我的查询效率.我曾经和DBA一起工作,他告诉我 – 我相信因为我一直在处理生产服务器上的报告 – 在每个查询中使用NOLOCK. 现在,我与一位在任何情况下都禁止NOLOCK的DBA合作 – 即使我的报告(由于几张表上相当缺乏索引)

我是一名报告开发人员,希望尽可能提高我的查询效率.我曾经和DBA一起工作,他告诉我 – 我相信因为我一直在处理生产服务器上的报告 – 在每个查询中使用NOLOCK.

现在,我与一位在任何情况下都禁止NOLOCK的DBA合作 – 即使我的报告(由于几张表上相当缺乏索引)正在停止复制和系统更新.在我看来,在这种情况下,NOLOCK将是一件好事.

由于我的大多数SQL培训都有不同的DBA,我想向各种各样的DBA提出这个问题.

解决方法

如果您的报告阻止了您的DBA正确的更新:您绝对不应该使用NOLOCK.存在冲突的事实清楚地表明,如果您使用脏读,您将得到不正确的报告.

在我看来,总有比NOLOCK更好的选择:

>您的生产表是否只有效且永远不会被修改?将数据库标记为只读!
>表扫描导致锁冲突?适当地索引表,好处是多重的.
>无法修改/不知道如何正确索引?使用SNAPSHOT ISOLATION.
>无法更改应用程序以使用快照?打开read committed snapshot!
>您已经测量了行版本控制的影响,并且有证据表明它会影响性能吗?你不能索引数据?和incorrect reports你还好吗?然后至少做一个忙,并使用SET TRANSACTION ISOLATION LEVEL,而不是查询提示.稍后修复隔离级别而不是修改每个查询会更容易.

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读