単一のデータベース操作の場合、複数のページに影響を与える可能性があります。たとえば、挿入操作によってページが分割される場合があります。その結果、データベースは不整合の考慮事項のためにREDO操作に論理ログを使用しません(操作は2ページに影響し、システムがクラッシュしたときに1ページのみがデータにフラッシュされます)。やり直し操作には、常に生理学的ログまたは物理的ログを使用します。ただし、ARIESアルゴリズムまたは一部のデータベース(例:mysql)では、元に戻すために論理ログを使用します。この操作は複数のページに影響を与える可能性があります。なぜ彼らはこれを行うことができますか?元に戻す操作の影響を受けた一部のページのみがディスクにフラッシュされ、システムが再びクラッシュした場合、どのようにしてロールバックの正確性を保証しますか?
質問する
1072 次
1 に答える
2
Aries は回復操作もログに記録するため、回復中のクラッシュの問題 (最後の質問) は、元に戻すための論理ログの問題と直交しています。操作が複数のページに影響を与える可能性があるという事実は、本質的に一貫性の問題を引き起こしません。
理論的には、やり直しにも論理ログを使用できると思いますが(元の牡羊座の論文では「やり直しと元に戻す操作を論理的に実行できます」)、物理ログの最大の利点はべき等であることです。UNDO プロトコルは、操作が複数回実行されないようにします。
論理ログには (物理ログと比較して) いくつかの利点があります。
- スペースを節約
- 「論理アンドゥを実行できることで、より高いレベルの並行性をサポートできます」
于 2016-06-19T21:55:50.317 に答える