web-dev-qa-db-ja.com

データベースでの盗みと力の違い

盗みがないということは、トランザクションがコミットする前にトランザクションの更新されたバッファがディスクに書き込まれず、同様の定義を持つフォースがないことを意味すると言われていますが、それらの違いは何ですか?

14
Flamme

トランザクションT1がデータオブジェクトXを読み取りたいが、作業メモリは他のすべてのトランザクションの作業でいっぱいであるとします。したがって、T1はメモリをクリアする必要があります。これは、ワーキングメモリ内の他のページを安定したストレージにキックすることによって行われます。 T1が安定したストレージにプッシュしているものがまだコミットされているかどうかを確認できないため、これは危険な場合があります。これは盗みとして知られています。

強制とは、トランザクションがコミットされるたびに、影響を受けるすべてのページが安定したストレージにプッシュされることを意味します。各ページは多くのトランザクションによって書き込まれる可能性があり、システムの速度が低下するため、これは非効率的です。

ほとんどのクラッシュリカバリは、スチール/強制なしのアプローチを使用し、コミットされていない可能性のあるデータをメモリに書き込むリスクを受け入れて、すべてのコミット効果をメモリに強制しない速度を実現します。

26
urgentx