これまで何度も with(nolock) ヒントを読んで使用してきましたが、特定のケースについて質問があります。
私の場合、1 つのデータベースを参照および更新するコードのセットが 1 つあります。
このコードは、シングル スレッドで実行することを意図していました。数か月前、彼らはコードを変更せずにマルチスレッド化することを決定しました。彼らが行った方法は、それぞれの異なる「コード プロセッサ」に異なる店舗グループを管理させることでした。
たとえば、プロセッサ 1 はストア 1 から 20 を処理し、プロセッサ 2 はストア 21 から 40 を処理します。
デッドロックが発生し始めるまで、すべてが順調に見えました。デッドロックは常にページ上にあります...ロックが行のみにある場合、あるプロセッサからのデータが別のプロセッサからのデータと競合することはないため、デッドロックは発生しません。その理論に基づいて、ロックする必要のないすべての選択に With(Nolock) ヒントを配置することにしました (まだ製品化されていません)。
私の同僚がこの記事を持ってきて私を怖がらせるまで、すべてがうまくいき、ダンディに見えました...それから私はそれを読みました...
私の場合、With(Nolock) ヒントを使用する危険性はありますか?データがプロセッサ間で競合することはありませんか?