パフォーマンスでは、選択に集中し続けます。
Shared は読み取りをブロックしません。
共有ロック ブロックが更新されます。
何百もの共有ロックがある場合、共有ロックがクリアされるのを待たなければならないため、排他ロックを取得するために更新に時間がかかります。
デフォルトでは、選択 (読み取り) は共有ロックを取得します。
共有 (S) ロックを使用すると、同時トランザクションでリソースを読み取る (SELECT) ことができます。
他の選択 (1 または 1000) に影響しない共有ロック。
違いは、nolock と共有ロックが更新または挿入操作にどのように影響するかです。
リソースに共有 (S) ロックが存在する間、他のトランザクションはデータを変更できません。
共有ロックは更新をブロックします!
ただし、nolock は更新をブロックしません。
これは、更新のパフォーマンスに大きな影響を与える可能性があります。インサートにも影響を与えます。
ダーティ リード (nolock) は汚い音に聞こえます。部分的なデータを取得することは決してありません。更新によって John が Sally に変更される場合、Jolly を取得することはできません。
私は並行性のために共有ロックをよく使用します。データは読み取られるとすぐに古くなります。次のミリ秒で Sally に変わる John の読み取りは、古いデータです。次のミリ秒で John にロールバックされる Sally の読み取りは、古いデータです。それはミリ秒レベルです。ユーザーが共有ロックを取得している場合は実行に20時間かかり、ユーザーがロックを取得していない場合は実行に4時間かかるデータローダーがあります。この場合の共有ロックにより、データは 16 時間古くなります。
nolocks を間違って使用しないでください。しかし、彼らには居場所があります。バイトが1に設定されているときにチェックをカットし、チェックがカットされたときにそれを2に設定する場合-ノーロックの時間ではありません。