【发布时间】:2010-11-29 23:51:27
【问题描述】:
我从事制作网站和应用程序的业务,这些网站和应用程序 不是关键任务 -> 例如。银行软件、太空飞行、重症监护应用等。你懂的。
那么,有了这么大的免责声明,在某些 Sql 语句中使用 NOLOCK 提示是不是很糟糕?几年前,一位 Sql 管理员建议我应该使用 NOLOCK,如果我对“脏读”感到满意,这会给我的系统带来更多性能,因为每次读取都不会锁定表/行/随便什么。
我还被告知,如果我遇到死锁,这是一个很好的解决方案。所以,我开始遵循这个想法几年,直到 Sql 大师帮助我编写一些随机代码并注意到我的 sql 代码中的所有 NOLOCKS。我被礼貌地骂了一顿,他试图向我解释(为什么这不是一件好事),我有点迷路了。我觉得他的解释的本质是'这是一个更严重问题的创可贴解决方案..特别是如果你遇到僵局。因此,解决问题的根源'。
我最近在谷歌上搜索了一下,发现了this post。
那么,请一些 sql db guru sensei 赐教我吗?
【问题讨论】:
-
我不明白 Sam,你是说如果它是一个阅读量很大的网站,请使用快照隔离。但是你说是这样做的,这很糟糕吗?还是只是他们对 NOLOCK 的使用?
标签: sql sql-server tsql sql-server-2008 nolock