加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 在每个查询中证明不使用(nolock)提示

发布时间:2020-12-12 17:00:33 所属栏目:MsSql教程 来源:网络整理
导读:你有没有必要证明不使用查询提示? 我在遇到非常繁忙的服务器的每个查询中看到WITH(NOLOCK).开发人员认为它应该默认处于启用状态,因为他们讨厌在代码中看到它数千次. 我试图解释它允许脏读,最终会得到坏数据,但他们认为性能权衡非常值得. (他们的数据库很乱;
你有没有必要证明不使用查询提示?

我在遇到非常繁忙的服务器的每个查询中看到WITH(NOLOCK).开发人员认为它应该默认处于启用状态,因为他们讨厌在代码中看到它数千次.

我试图解释它允许脏读,最终会得到坏数据,但他们认为性能权衡非常值得. (他们的数据库很乱;难怪他们有性能问题.)

如果您有一个明确的例子说明如何针对滥用NOLOCK提示提出案件,那将不胜感激.

解决方法

你选择你的战斗和战斗这样的战斗是不容易的.我们有一个系统,其中每个DML都带有ROWLOCK提示(无论是修改一行还是几千行).我举了几个例子,说明为什么它真的会伤害性能,但是由于系统已经在运行,因此存在变革的阻力.请注意,我说服他们足够不要使用这个.

NOLOCK有它的位置,但我可以推荐一些很好的参考资料,展示使用它的麻烦:

> Microsoft SQL Server开发客户咨询团队博客 – Previously committed rows might be missed if NOLOCK hint is used
> Itzik Ben Gan在SQL Magazine – Clustered Index Scans Part III
> Itkiz Ben Gan on sqlpass.org – Beware the NOLOCK hint

(编辑:李大同)

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

    推荐文章
      热点阅读