コマンド解説書

db2advis - DB2 索引アドバイザー

1 つ以上の SQL ステートメントに作成する索引についてユーザーにアドバイスします。 関連 SQL ステートメントのグループは、ワークロード と呼ばれます。 ユーザーは、ワークロード中の各ステートメントの重要性をランク付けし、 ワークロード中の各ステートメントが実行される頻度を指定することができます。 各表ごとに推奨される索引、それらに応じて派生する統計、およびそれぞれを作成する DDL は、 ユーザー作成の表 ADVISE_INDEX に書き込まれます。
注:構造型列は、このコマンドの実行時には考慮されません。

許可

データベースへの読み取りアクセス。 Explain 表への読み取りおよび書き込みアクセス。

必須接続

なし。 このコマンドは、データベース接続を確立します。

コマンド構文

>>-db2advis----d--database-name----+--------------------+------->
                                   +--w--workload-name--+
                                   +--s--"statement"----+
                                   '--i--filename-------'
 
>-----+---------------------------+---+-----------------+------->
      '--a--userid--+----------+--'   '--l--disk-limit--'
                    '-/passwd--'
 
>-----+----------------------+---+-----+-----------------------><
      '--t--max-advise-time--'   '--h--'
 

コマンド・パラメーター

-d database-name
接続の確立先のデータベースの名前を指定します。

-w workload-name
索引がアドバイスされるワークロードの名前を指定します。 この名前は ADVISE_WORKLOAD 表で使用されます。

-s "statement"
索引がアドバイスされる単一の SQL ステートメントのテキストを指定します。 ステートメントは必ず二重引用符で囲んでください。

-i filename
1 つ以上の SQL ステートメントが入っている入力ファイルの名前を指定します。 省略時は標準入力です。 注釈テキストは、 各行の先頭に 2 つのハイフンを付けて -- <注釈> で表します。 ステートメントは必ずセミコロンで区切ってください。

ワークロード中の各ステートメントが実行される頻度は、 次の行を入力ファイルに挿入することによって変更できます。

   --#SET FREQUENCY <x>

頻度は、ファイル中何回でも更新できます。

-a userid/passwd
データベースへの接続に使用する名前およびパスワード。 パスワードが指定される場合、斜線 (/) を含めなければなりません。

-l disk-limit
既存のスキーマですべての索引に使用可能な最大 MB を指定します。 省略時値は、区画 (64 GB) ごとの索引の最大サイズにおける、 データベース・マネージャー限度です。

-t max-advise-time
最大許可時間 (分) を指定し、操作を完了します。 省略時値は 10 です。 無制限の時間は、ゼロの値によって指定されます。

-h
ヘルプ情報を表示します。 このオプションを指定すると、他のすべてのオプションは無視され、 ヘルプ情報だけが表示されます。

次の例では、ユーティリティーは PROTOTYPE データベースに接続し、 解決策において制限なしで ADDRESSES 表に索引を推奨します。

   db2advis -d prototype -s "select * from addresses a
      where a.zip in ('93213', '98567', '93412')
      and (company like 'IBM%' or company like '%otus')"

次の例では、ユーティリティーは PROTOTYPE データベースに接続し、 ワークロード名が "production" に等しい ADVISE_WORKLOAD 表の照会で、 53 MB を超えない索引を推奨します。 解決策を見つけるための最大許可時間は 20 分です。

   db2advis -d prototype -w production -l 53 -t 20

最後の例では、db2advis.in という名前の入力ファイルに SQL ステートメント、 および各ステートメントが実行される頻度の指定が含まれています。

   --#SET FREQUENCY 100
   SELECT COUNT(*) FROM EMPLOYEE;
   SELECT * FROM EMPLOYEE WHERE LASTNAME='HAAS';
   --#SET FREQUENCY 1
   SELECT AVG(BONUS), AVG(SALARY) FROM EMPLOYEE
      GROUP BY WORKDEPT ORDER BY WORKDEPT;

ユーティリティーは SAMPLE データベースに接続し、 入力ファイル内の照会によって参照される各表ごとに索引を推奨します。 解決策を見つけるための最大許可時間は 5 分です。

   db2advis -d sample -f db2advis.in -t 5

使用上の注意

動的 SQL ステートメントの場合、ステートメントが実行される頻度は、 次のようにモニターから獲得されます。

  1. 次のように発行します。
       db2 reset monitor for database <database-alias>
    

    適切な時間間隔で待機します。

  2. 次のように発行します。
       db2 get snapshot for dynamic sql on <database-alias>
          write to file
    
  3. 次のように発行します。
       
          db2 "insert into advise_workload
          (select 'myworkload', 0, stmt_text, cast(generate_unique() as
          char(254)), num_executions, 1, num_executions, 0, 0
          from table(SYSFUN.SQLCACHE_SNAPSHOT()) as correlations_name"
    

ワークロードの各 SQL ステートメントの省略時頻度は 1 で、省略時の重要度も 1 です。 generate_unique() 関数は、その SQL ステートメントのより分かりやすい説明になるように、 ユーザーによって更新できるステートメントに、固有の識別子を割り当てます。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]