4

SNAPSHOT 分離を使用して、ロック、ブロック、またはダーティ/ファントム読み取りなしで一貫して表示するためにデータを読み取る際に、別のプロセスがシリアル化可能なトランザクションで継続的な受信データを処理しているときに問題はありますか?

ブロックされたり、更新をブロックしたりすることなく、一貫したデータを読み取ることができるリーダー (読み取り専用の保証: Web データ同期、リアルタイム監視ビューなど) が必要です。すべてに SNAPSHOT を使用していましたが、整合性エラーが多すぎたため、更新プロセスを SERIALIZABLE に切り替えました。

私は読んだことがありますが、異なる分離レベルを同時に使用することの影響については完全には明確ではありません。ロックの互換性マトリックスを見て、さまざまな情報を読みました。それは問題ないように思えますが、大きな落とし穴について実際の経験を持つ人々からの賢明なガイダンスに本当に感謝しています.

SERIALIZABLE トランザクションが書き込み中に、リーダーのスナップショット分離を使用する際に問題はありますか? SERIALIZABLE トランザクションをブロックする状況はありますか? SNAPSHOT と READ COMMITTED (READ_COMMITTED_SNAPSHOT ON) を使用する利点はありますか?

ありがとう、どんな支援も大歓迎です:-)

4

1 に答える 1

4

SNAPSHOT 分離レベルで実行される読み取りでは、変更されたデータがバージョン ストアから読み取られます。そのため、書き込みによってのみ影響を受けます。書き込みは、すべての分離レベルで同じように動作します。したがって、同時実行トランザクションの分離レベルに関係なく、SNAPSHOT 読み取りは同じように動作します。

READ_COMMITTED_SNAPSHOT ON は、READ COMMITTED を SNAPSHOT として機能させます。事実上、これは SNAPSHOT です。READ_COMMITTED_SNAPSHOT は、コードを変更せずにアプリケーションを SNAPSHOT に移植する簡単な方法として提供されました。したがって、最初の段落で述べたすべてが適用されます。

于 2010-12-05T01:09:42.380 に答える