簡體   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