の正当性を使用しない(nolock)のヒント毎にクエリ
-
16-10-2019 - |
質問
また正当性を使用しないクエリのヒント?
私は見る WITH (NOLOCK)
全てのクエリのヒットは非常に忙しいサーバーです。この点、開発者の思いだされるデフォルトが嫌いなのでそのコードを数千倍にアップします。
いについて説明してくれました。ることが可能に汚れを読み込みしてしまう悪いデータが、このトレードオフの関係は、それだけの価値がある。(データベースが散らかっ;くらいになったのは、このようない性能の問題です。)
いえば、どのように表示すべきかについての場合にはこの虐待の NOLOCK
ヒントは、よりお願い申し上げます。
解決
このような戦いや戦いを選ぶことはできません。すべてのDMLがRowlockヒントで示唆されるシステムがあります(1列または数千行を変更することに関係なく)。なぜそれが実際にパフォーマンスを傷つけるのかいくつかの例を示しましたが、システムがすでに機能しているため、変化に対する抵抗があります。ただし、これを今後使用しないように十分に確信したことに注意してください。
Nolockには場所がありますが、それを使用する問題を示すいくつかの良い参照をお勧めします:
- Microsoft SQL Server開発顧客アドバイザリーチームブログ - Nolockのヒントが使用されている場合、以前にコミットされた行が見逃される可能性があります
- SQL MagazineのItzik Ben Gan - クラスターインデックススキャンパートIII
- sqlpass.orgのitkiz ben gan - ノロックのヒントに注意してください
他のヒント
で紹介されましたがる前に:
- https://stackoverflow.com/questions/2141104/using-nolock-hint-in-ef4/2141802#2141802
- https://stackoverflow.com/questions/1682240/what-can-happen-as-a-result-of-using-nolock-on-every-select-in-sql-sever
の定義があります。高い量50k新しい行を次の大きな集合体など)なのだぁデータをも
同僚に、隔離レベルを理解することの重要性を説明する必要があります。それらに例を表示します。私がリトルケンドラで見つけた最も素晴らしくて最も簡単な説明 分離レベルのポスター。彼らがノロックのヒントが必要だと思う理由を彼らに尋ねてください。 「Set Transaction Isolation Level ...」ステートメントを使用しないのはなぜですか?彼らが修正したい状況は正確には何ですか、おそらく彼らはデッドロックを持っている、ブロッキング..etc。彼らがロックを保持したくない場合、彼らはスナップショット分離レベルを検討するかもしれません。
彼らに尋ねることによってのみ、あなたは明確な絵を描くことができます。