まず第一に、NOLOCK を使用する必要があるかどうかを尋ねているわけではありません。それを乗り越えましょう。
問題は、SQLサーバーがデータを書き込む方法に帰着すると思いますか? 行全体が一度に書き込まれますか、それとも一度に列ごとに書き込まれますか?
NOLOCKヒントを検討中なのでお願いします。行全体が返される (または返されない) 限り、ダーティ リードは問題ありません。部分的に書き込まれた行は受け入れられません。
まず第一に、NOLOCK を使用する必要があるかどうかを尋ねているわけではありません。それを乗り越えましょう。
問題は、SQLサーバーがデータを書き込む方法に帰着すると思いますか? 行全体が一度に書き込まれますか、それとも一度に列ごとに書き込まれますか?
NOLOCKヒントを検討中なのでお願いします。行全体が返される (または返されない) 限り、ダーティ リードは問題ありません。部分的に書き込まれた行は受け入れられません。
いいえ。挿入、更新、削除などのデータ変更操作は、低レベルの物理ラッチによって保護されています。ロックフリー SELECT を含むすべてのデータ アクセス操作は、ラッチング プロトコルに準拠する必要があります。その結果、部分的な書き込みはどのリーダーにも表示されません。
いいえ、部分的に書き込まれた行は返されません。NOLOCK は、このクエリが新しいロックを作成しないことを意味するだけです。これは、既存のロックを尊重しないという意味ではなく、SQL Server は最初にロックを取得せずにデータを書き込むことは何もしません。
このクエリによって通常はロックされる行に別の何かが書き込まれたために、古くなった行や関連性がなくなった行が返される可能性があります。