【发布时间】:2014-11-21 11:16:15
【问题描述】:
在我们的应用程序中,根据 DBA 的建议,我们正在为每个使用的选择查询添加no lock提示。
因此,需要修改每个选择查询以设置表提示,并且需要手动进行。
由于我们想在数据库中的所有表中使用提示,是否可以在 数据库级别这样就不需要修改每个查询并将表提示应用于所有查询?
【问题讨论】:
-
我会要求您的 dba 证明要求每个 select 语句都应要求无锁定提示,并附上他/她预计会出现问题的真实示例,我会抄送您的经理对话,以确保这样的改变得到他们的认可。 SQL Server 非常擅长在不使用提示的情况下自行处理事情。仅在极少数情况下您可能会考虑使用它们,如果将其批量应用于每个选择查询,我会非常怀疑。
-
我有兴趣了解推荐背后的原因。
-
@Tanner,谢谢。我们知道它仅在某些情况下会有所帮助,并且只想知道此类功能是否存在或是否可以解决:)
-
@NP3,您可以说应用程序用例就像单个用户用例,用户可以添加/修改数据并且他只读取数据。还有其他用户使用相同的表,但数据大多在用户之间隔离。因此,在这种特殊情况下,用户可能会从中受益
-
如果真的是不同用户几乎不会读取相同数据的情况,根本不需要提示,甚至快照隔离也可能是矫枉过正。 SQL Server 完全能够在适当的情况下在行级别锁定数据,因此不涉及彼此数据的查询根本不会相互阻塞。我真的希望你的 DBA 也知道这些事情......
标签: sql sql-server sql-server-2008