ロギング・オーバーヘッド
データベース・マネージャーは、データベースのすべての変更内容を記録するログ・ファイルを維持します。 ロギング・ストラテジーには、循環ロギングとアーカイブ・ロギングの 2 つがあります。
- 循環ロギング を使用すると、使用可能なファイルが満杯になると、ログ・ファイルが再利用 (初期ログ・ファイルを始めとして) されます。 上書きされたログ・レコードをリカバリーすることはできません。
- アーカイブ・ロギング を使用すると、ログ・ファイルがログ・レコードで満杯になるとアーカイブされます。 ログを保持するとロールフォワード・リカバリーが可能になります。ロールフォワード・リカバリーによって、ログ・ファイルに記録されたデータベースに対する変更内容 (完了した作業単位またはトランザクション) を災害時リカバリーに再び適用できます。
正規データおよび索引ページになされた変更はすべてがログ・バッファーに書き込まれてから、ロガー・プロセスによってディスクに書き込まれます。 次の状況では、SQL ステートメントの処理は、ログ・データがディスクに書き込まれるのを待機する必要があります。
- COMMIT で。
- 対応するデータ・ページがディスクに書き込まれるまで。これは、 Db2® サーバーが先行書き込みロギングを使用するためです。このロギングでは、トランザクションが COMMIT ステートメントで完了したときに、変更されたデータ・ページと索引ページのすべてをディスクに書き込む必要はありません。
- 変更 (ほとんどはデータ定義言語ステートメントの実行結果によって生じる) がメタデータに加えられるまで。
- ログ・バッファーが満杯になるとき
Db2は、SQLステートメント全体の処理時間を最小限に抑えるため、I/Oの開始やデータ量など、ログデータのディスクへの書き込みを管理します。
ラージ・オブジェクト (LOB) および LONG VARCHAR への変更は、 シャドー・ページングによりトラックされます。 ログ保持が指定され、LOB 列が CREATE TABLE ステートメントで NOT LOGGED 節なしで定義されていないかぎり、 LOB 列の変更はログに記録されません。 LONG または LOB データ・タイプの割り当てページへの変更は、 正規データ・ページと同様にログに記録されます。 インライン LOB 値は、VARCHAR 値であるかのように、ロギングの更新、挿入、または削除に全面的に関与します。