Oracleデータベースに関連するこれらの3つの用語の違いに関する私の理解を誰かが確認できるかどうか疑問に思っていました。
多くの情報源はこれらの用語を混同し、それらを詳細に説明していないため、情報を見つけるのは少し困難でした。
私が集めたものから:
うまくいけば、誰かがこれらの点を確認できます!ありがとう!
あなたには基本的な権利があります。コミットのタイプは1つだけです(normal、fast..) 。)。
概念ドキュメント から:
トランザクションがコミットすると、次のアクションが発生します。
COMMITに対してシステム変更番号(SCN)が生成されます。
トランザクションがコミットした、関連付けられているUNDOテーブルスペースレコードの内部トランザクションテーブル。トランザクションの対応する一意のSCNが割り当てられ、トランザクションテーブルに記録されます。 「シリアライズ可能な分離レベル」を参照してください。
ログ・ライター(LGWR)プロセスは、REDOログ・バッファー内の残りのREDOログ・エントリーをオンラインREDOログに書き込み、トランザクションSCNをオンラインREDOログに書き込みます。このアトミックイベントは、トランザクションのコミットを構成します。
Oracle Databaseは、行と表に保持されているロックを解放します。
コミットされていないトランザクションによって保持されているロックを待機してエンキューされたユーザーは、作業を続行できます。
Oracle Databaseはセーブポイントを削除します。
Oracle Databaseはコミットのクリーンアウトを実行します。
コミットされたトランザクションからのデータを含む変更されたブロックがまだSGAにあり、他のセッションがそれらを変更していない場合、データベースはブロックからロック関連のトランザクション情報を削除します。理想的には、COMMITがブロックをクリーンアップして、後続のSELECTがこのタスクを実行する必要がないようにします。
そのため、ブロックがまだSGAにある場合は、コミット中にクリーンアウト(やり直しで完全)が実行されます。
アクティブなシステムでは、コミットされていないトランザクションのあるブロックがディスクに書き込まれ、SGAからフラッシュされるのが一般的です。この場合、ブロックはそのまま残され、ブロックに触れる次のクエリは遅延ブロッククリーンアウトを実行します(ポイント5はすべてのケースで発生するわけではありません)。