我想知道如果僅影響該表的其他查詢是SELECT
查詢,那麼在表上使用SELECT WITH (NOLOCK)
有什麼好處。瞭解SELECT查詢中的SQL Server LOCKS
SQL Server如何處理? SELECT
查詢會阻止另一個SELECT
查詢嗎?
我正在使用SQL Server 2012和Linq-to-SQL DataContext
。
(EDIT)
關於性能:
- 會第2個
SELECT
必須等待1SELECT
到如果使用的是鎖定SELECT
完成? - 與a
SELECT WITH (NOLOCK)
?
謝謝。
很好的答案,非常感謝!會不會有影響(在數百個'SELECT'查詢中)無理地使用'WITH(NOLOCK)'? –
我們在99.5%的選擇中使用了nolock,沒有開玩笑。如果管理員正在更新用戶記錄,則不希望其導致報告在此處等待整個分佈式事務處理完成。所以他們的舊數據顯示在報告中。誰在乎?如果報告已經在那之前運行了一秒鐘,那麼就是與rowlock一樣的數據。唯一值得關注的是尚未確定的數據。如果您顯示的是「最近一小時內的訂單」,這可能是一個問題,但與速度/併發增益相比,這是一個微小的問題。 –
此外,由於「報告」被作爲示例拋出,報告通常是在過去5分鐘的時間段內。使用nolock報告上個月的數據 - 好像這些數據不會在一個月後回滾。 –