IBM Support

[Db2] コミット・アクティブ (Commit Active) によるパフォーマンス遅延の主な原因と対処方法

Question & Answer


Question

特定のデータベースを使用するアプリケーションでパフォーマンス遅延が発生しました。 このとき、db2pd -alldbs -app や list applications show detail で、状況を確認するとコミット・アクティブ (Commit Active) のアプリケーションが多数観察されました。 遅延の原因と対処方法を教えてください。

Cause

コミット・アクティブ (Commit Active) は、作業単位による変更をコミットする操作であり、トランザクション・ログのフラッシュとロックの解放を行っています。
特にログのフラッシュで実行されるバッファープールの走査とログ・ファイルの書き込みで遅延が発生することがあります。

コミット・アクティブ中の詳細な状態は、db2pd -stack all で各エージェントのスタックを採取して確認できます。
sqlb* 関数で作業中の場合はバッファープール、sqlp* 関数で作業中の場合はログの書き込みで遅延している可能性があります。
appl_status アプリケーション状況 : モニター・エレメント

Answer

コミット・アクティブの多発によるパフォーマンスの問題に遭遇した場合、以下の 2 点をチェックしてください。
 
  1. ログ書き込みの遅延
    間歇的に遅延が発生する場合、履歴ファイルの更新が遅延の原因となっている可能性があります。
    DB2 は新しいログファイルに書き込みを始めるとき、履歴ファイルの更新が必要になりますが、他のタスクによる履歴ファイルの更新と競合する場合があります。履歴ファイルが大きいと、競合するタスクの履歴ファイルの更新に時間がかかる場合があり、結果として、新しいログファイルへの書き込みの遅延の原因になります。

    履歴ファイルが大きくなっているときは prune history コマンドで履歴ファイルを整理してください。
    2013 年 1 月 1 日より古いエントリーを削除する例:
    1. DBADM 以上の権限でデータベースに接続します。
      db2 connect to <dbname>
    2. PRUNE HISTORY コマンドで 2013 年 1/1 より古い履歴を整理します。
      db2 PRUNE HISTORY 20121231235959
    HADR を構成している場合、HADR のログ送信が遅れるとコミットが遅延します。
    HADR による遅延時間の合計は mon_get_transaction_log 表関数の log_hadr_wait_time で確認できます。
    log_hadr_wait_time が増加している場合、ログ・スプーリングの有効化や LOAD および再編成の抑制などの対策を検討してください。
  2. バッファープールの遅延
    Db2 は一時表スペースと関連付けられたバッファープールが大きいとき、dirty list の探索で時間がかかる場合があります。
    システム一時表スペースや、ユーザー一時表スペースには、小さいバッファープールを関連付けてください。
    遅延が発生するシナリオの詳細は、「関連情報」の Technote を参照してください。
 
運用上の考慮点
一時表スペース用のバッファープールが小さすぎると、一時表を利用する操作のパフォーマンスが低下する可能性があります。
バッファープールのサイズ調整においては、十分なテストを行うことをお勧めします。

関連情報
PRUNE HISTORY/LOGFILE コマンド
[Db2] データ量が同じでも BACKUP や LOAD の実行時間が長くなる
[Db2] オンラインバックアップ中に更新トランザクションが遅延する (IM-10-0AA)
[Db2] 一時表スペースに非常に大きなバッファー・プールを割り当てると、パフォーマンスに影響することがある
DB2 applications are in "Commit Active" state when using DECLARED GLOBAL TEMPORARY TABLE
 
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PlPAAU","label":"Database Objects-\u003EBufferpools"},{"code":"a8m3p0000006xKvAAI","label":"transaction Logs"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"10.1.0;10.5.0;11.1.0;11.5.0;9.7.0"}]

Document Information

Modified date:
31 August 2023

UID

swg21628422