Select(nolock)の後にInsert/Updateを実行すると、予期しない結果が同じデータで得られますか?
同じレコードのselect(nolock)の後にinsert/updateを実行すると予期しない結果が生じることがありますか?
私はいつも(完全な)更新/挿入されたレコードを取得していますか?
ご協力いただきありがとうございます。
Select(nolock)の後にInsert/Updateを実行すると、予期しない結果が同じデータで得られますか?
同じレコードのselect(nolock)の後にinsert/updateを実行すると予期しない結果が生じることがありますか?
私はいつも(完全な)更新/挿入されたレコードを取得していますか?
ご協力いただきありがとうございます。
すべてが単一プロセスで行われている場合、データは正しいでしょう。 しかし、ストアドプロシージャが別のプロセスIDから呼び出され、ユーザーが他のプロセスでselect(nolock)を実行している場合、selectではデータの不一致が発生する可能性があります。
ストアドプロシージャはまだ使用されている可能性があります。
Thx Signh!同時スレッドは多数存在し、すべてが一意のレコード(新規または更新)で動作します。まだ問題はありませんか? – Gerard
理想的には、コミットされていないノーロックとリードは使用すべきではありませんが、結果セットをグラフまたはダッシュボードにプロットし、トレッドを表示しているときに不一致が生じる場合は、ノーロックを使用できます。 –
気にするなら、なぜあなたは 'NOLOCK'ヒントを使用しますか? –
(b)はロックされませんが、しばらくしたら奇妙な結果に気付きます。多くの同時スレッドがあり、すべてがユニークなレコード(新規または更新済み)で動作しています。 – Gerard
NOLOCKスキャン中に並行挿入/更新アクティビティを実行すると、行が欠落または重複する可能性があります。アプリケーションが悲観的なロックに依存しない限り、READ_COMMITTED_SNAPSHOTデータベースオプションを有効にする方がよいでしょう。 –