ロギング・オーバーヘッド

データベース・マネージャーは、データベースのすべての変更内容を記録するログ・ファイルを維持します。 ロギング・ストラテジーには、循環ロギングとアーカイブ・ロギングの 2 つがあります。

  • 循環ロギング を使用すると、使用可能なファイルが満杯になると、ログ・ファイルが再利用 (初期ログ・ファイルを始めとして) されます。 上書きされたログ・レコードをリカバリーすることはできません。
  • アーカイブ・ロギング を使用すると、ログ・ファイルがログ・レコードで満杯になるとアーカイブされます。 ログを保持するとロールフォワード・リカバリーが可能になります。ロールフォワード・リカバリーによって、ログ・ファイルに記録されたデータベースに対する変更内容 (完了した作業単位またはトランザクション) を災害時リカバリーに再び適用できます。
正規データおよび索引ページになされた変更はすべてがログ・バッファーに書き込まれてから、ロガー・プロセスによってディスクに書き込まれます。 次の状況では、SQL ステートメントの処理は、ログ・データがディスクに書き込まれるのを待機する必要があります。
  • COMMIT で。
  • 対応するデータ・ページがディスクに書き込まれるまで。これは、 Db2® サーバーが先行書き込みロギングを使用するためです。このロギングでは、トランザクションが COMMIT ステートメントで完了したときに、変更されたデータ・ページと索引ページのすべてをディスクに書き込む必要はありません。
  • 変更 (ほとんどはデータ定義言語ステートメントの実行結果によって生じる) がメタデータに加えられるまで。
  • ログ・バッファーが満杯になるとき

Db2は、SQLステートメント全体の処理時間を最小限に抑えるため、I/Oの開始やデータ量など、ログデータのディスクへの書き込みを管理します。

ラージ・オブジェクト (LOB) および LONG VARCHAR への変更は、 シャドー・ページングによりトラックされます。 ログ保持が指定され、LOB 列が CREATE TABLE ステートメントで NOT LOGGED 節なしで定義されていないかぎり、 LOB 列の変更はログに記録されません。 LONG または LOB データ・タイプの割り当てページへの変更は、 正規データ・ページと同様にログに記録されます。 インライン LOB 値は、VARCHAR 値であるかのように、ロギングの更新、挿入、または削除に全面的に関与します。