DB2逆引きリファレンス目次】 【DB2逆引きリファレンス目次#チューニング編】 【DB2逆引きリファレンス目次#自動チューニング

前提

解説

作成すべきインデックスについてアドバイスを取得するには、db2advisコマンドを用います。

db2advis -d データベース名 ワークロード指定 [-u ユーザ名/パスワード ] [-o 出力ファイル名 ]

-d データベース名
: インデックス作成のアドバイスを取得するために接続するデータベースの名前を指定します。

ワークロード指定
: インデックス作成の前提となるワークロード(実行するSQL)を以下の形式のいずれかで指定します。

-s"SQLステートメント"
: 単一のSQLステートメントを指定します。SQLステートメントは必ず二重引用符(")で括ってください。

-i ファイル名
: ひとつ以上のSQLを記述したファイルの名前を指定します。各SQLの終わりには必ずセミコロン(;)を入力してください。 SQL以外にも以下のものを記述することができます。

-- コメント
: コメントを記述します。

--#SET FREQUENCY 実行頻度の重み
: SQLが実行される回数の重み付けを整数値で指定します。この記述がなされた行以降で記述されたSQLに対して有効になります。 実行頻度の重みづけを指定することで、どのSQLを重要視すべきか指定できます。

-g
: 動的SQLスナップショットに含まれるSQLをワークロードとして用います。

-u ユーザ名/パスワード
: データベースへの接続に用いるユーザ名およびパスワードを指定します。

-o 出力ファイル名
: インデックスを作成するためのDDLを出力するファイル名を指定します。

使用例

SQLステートメントを指定して、データベース(ここではsample)に対して作成すべき索引のアドバイスを取得する例。

db2 ==> db2advis -d sample -s "SELECT * FROM employee"↓

ワークロードファイル(ここではworkload.sql)を指定して、データベース(ここではsample)に対して作成すべき索引のアドバイスを取得する例。

db2 ==> db2advis -d sample -i workload.sql↓

ワークロードファイルworkload.sqlの内容は以下のとおりです。

-- SQL 1
--#SET FREQUENCY 100
SELECT * FROM employee;

-- SQL 2
--#SET FREQUENCY 10
SELECT empno, firstnme, midinit, lastname, workdept, deptname
FROM employee, department
WHERE employee.workdept = department.deptno;

注意

参照