![](/img/trans.png)
[英]“SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED” and views
[英]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.