DB2 6 min read

Db2 REORGコマンド解説




Db2 REORGコマンド解説(運用管理編)

Db2 REORGコマンド ガイド

Db2のREORGコマンドは、データの物理的な再構成(整理整頓)を行い、データベースのパフォーマンスを最適化するための重要なツールです。


1. なぜREORGが必要か?

データの追加・更新・削除を繰り返すと、以下のような問題が発生します:

  • 断片化(フラグメンテーション): データがバラバラに配置され、読み取り効率が低下。
  • オーバーフロー・レコード: 更新によって行が長くなり、別のページにデータが跨がってしまう。
  • クラスタリング指数の低下: インデックスの順序と物理データの並び順が乖離する。

2. 実行モードの比較

種類 特徴 メリット デメリット
OFFLINE テーブルを排他ロック 高速・確実な再構成 実行中はアクセス不可
ONLINE INPLACE(実行中も利用可) 業務を止めずに実行可能 処理が遅く、ログ消費大

3. 実行中の進捗状況を確認する

進捗を確認する方法は主に2つあります。

A. LIST UTILITIES コマンド

db2 LIST UTILITIES SHOW DETAIL

出力結果の例:

Type                             = REORG
Description                      = Table Reorg
Start Time                       = 2026/03/27 10:00:00
State                            = Executing
Progress Monitoring:
   Completed Work                = 500000 bytes
   Total Work                    = 1000000 bytes
    
  • Completed Work / Total Work: 処理済みの量と全体の比率を確認。この例では「50%完了」と判断できます。

B. db2pd コマンド

db2pd -db <DB名> -reorgs

出力結果の例(抜粋):

Address            TableName          Status      TotalPages   CompletedPages
0x00007F           EMPLOYEE           Started     1000         450
    
  • Status: 現在のフェーズ(Started, Sorted, Rebuilding Indexesなど)を詳細に確認。
  • Total Pages / Completed Pages: ページ単位でのより細かい進捗率がわかります。

4. 実行時間の見積もりについて

正確な時間は算出できませんが、以下の要素に依存します。

  • データ量とインデックス数: 数とサイズに比例して増加。
  • LOBデータの有無: ラージオブジェクトが含まれると極端に遅くなる場合があります。

実務では過去の履歴(db2 list history reorg for db <DB名>)を参考にバッファを積んで計画します。

5. 基本的なコマンド例

-- テーブルの再構成
REORG TABLE スキーマ名.テーブル名;

-- インデックスの再構成
REORG INDEXES ALL FOR TABLE スキーマ名.テーブル名;
    

【重要】
REORG実行後は、必ず RUNSTATS を実行して統計情報を更新してください。

6. 実行の判断基準

以下のコマンドで、再構成が必要なテーブルを確認できます。

db2 REORGCHK UPDATE STATISTICS ON TABLE ALL

結果リストの右側にあるフラグ(F1~F8)にアスタリスク(*)が付いているものが、REORG推奨のサインです。