繁体   English   中英

是否可以在数据库级别设置无锁或“事务隔离级别未提交读”?

[英]Is it possible to set no lock or TRANSACTION ISOLATION LEVEL READ UNCOMMITTED at database level?

根据DBA的建议,在我们的应用程序中,我们没有向每个使用的选择查询添加锁定提示。

因此,它需要修改每个选择查询以设置表提示,并且需要手动进行。

由于我们想在数据库中的所有表中使用提示,是否可以在数据库级别设置无锁提示(或TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ),这样就无需修改每个查询并将表提示应用于所有疑问?

最简洁的答案是不”。 SQL Server中的默认隔离级别为READ COMMITTED ,并且无法将其全局或按数据库更改为UNCOMMITTED 这也是一件非常好的事情。

WITH (NOLOCK)是从数据库中获取准确结果的麻烦秘诀,在坏情况下,它甚至可能由于数据移动而导致永久运行的查询超时( NOLOCK无法防御)。 请参见NOLOCK(SQL Server提示)是否是不良做法? 有关更多讨论,以及关于替代方法的一些不错的技巧。

特别是,许多读取器繁重的应用程序希望继续运行而不会阻塞,则可以从快照隔离中受益。 UNCOMMITTED不同,您可以使用READ_COMMITTED_SNAPSHOT选项将快照隔离设置为默认设置。 在执行此操作之前,请务必先阅读快照隔离的优缺点-或者更好的是,请您的DBA进行此操作,因为任何建议全局使用WITH (NOLOCK) DBA都需要做一些阅读工作。 查询提示仅应作为最后的手段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM