以下は私が持っているシナリオです: 4 つのテーブルを結合してデータを返すストアド プロシージャがあります。1 日に 2 回、上記の 4つのテーブルのいずれかに一括アップロードが行われます。負荷は 10 ~ 15 分間続きます。このストアド プロシージャを呼び出す UI が、この 10 ~ 15 分間のウィンドウでフリーズ/ブロック/スローダウンすることは望ましくありません。上記のテーブルからダーティ/コミットされていないデータを表示することは気にしません。以下は私の質問です:
日中にロードされるテーブルだけで NOLOCK を使用する必要がありますか、それとも結合の 4 つのテーブルすべてに NOLOCK を追加する必要がありますか。例えば
SELECT * FROM Table1 T1 WITH (NOLOCK) --this is the table that will be bulk-loaded twice during the day INNER JOIN Table2 T2 WITH (NOLOCK) INNER JOIN Table3 T3 WITH (NOLOCK) INNER JOIN Table4 T4 WITH (NOLOCK)
またはこれで十分ですか
SELECT * FROM Table1 T1 WITH (NOLOCK) --this is the table that will be bulk-loaded twice during the day INNER JOIN Table2 T2 INNER JOIN Table3 T3 INNER JOIN Table4 T4
取得手順の最初に SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED を追加し、最後に READ COMMITTED に戻すと、違いはありますか?
ありがとう
ヴィカス