为了账号安全,请及时绑定邮箱和手机立即绑定

是NOLOCK(Sql Server提示)不好的做法吗?

是NOLOCK(Sql Server提示)不好的做法吗?

慕哥9229398 2019-08-17 14:47:21
是NOLOCK(Sql Server提示)不好的做法吗?我的业务是制作非关键任务的网站和应用程序- 例如。银行软件,太空飞行,重症监护应用等。你明白了。那么,有了这个庞大的免责声明,在一些Sql语句中使用NOLOCK提示是不是很糟糕?几年前,一位Sql管理员建议我应该使用NOLOCK,如果我对“脏读”感到满意,这会让我的系统性能提高一些,因为每次读取都没有锁定表/行/不管。我还被告知,如果我遇到死锁,这是一个很好的解决方案。所以,我开始关注这个想法几年,直到一个Sql大师帮我一些随机代码并注意到我的sql代码中的所有NOLOCKS。我被礼貌地骂了,他试图向我解释(为什么这不是一件好事)而且我迷路了。我觉得他的解释的本质是'它是一个解决更严重问题的创可贴解决方案......特别是如果你遇到了死锁。因此,修复问题的根源。我最近做了一些谷歌搜索,并发现了这篇文章。那么,有些sql db guru sensei的请赐教吗?
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

如果您不关心脏读(即主要处于READ状态),那么NOLOCK就可以了。

但是,请注意,大多数锁定问题是由于没有查询工作负载的“正确”索引(假设硬件完成任务)。

大师的解释是正确的。它通常是解决更严重问题的创可贴解决方案。

编辑:我绝对不建议使用NOLOCK。我想我应该明白这一点。(我只会在极端情况下使用它,我已经分析过它可以)。作为一个例子,前一段时间我在一些TSQL上工作,这些TSQL上撒有NOLOCK以试图缓解锁定问题。我删除了所有,实现了正确的索引,所有的死锁都消失了。


查看完整回答
反对 回复 2019-08-17
  • 3 回答
  • 0 关注
  • 497 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信