データベースを効率よくアクセスするために、最適化情報の設定を行います。最適化情報は、格納構造の定義が完了したあとに、データベースに格納するレコードの件数やインデックスキーのバリエーションを想定して値を設定します。
最適化情報を設定後、アクセスプランを取得し、解析します。これによって、データベースを適切にチューニングすることができます。一度アクセスプランによってチューニングしたあとは、それ以降にデータの状態に変更があっても、最適化情報の設定および更新は必要ありません。
参照
アクセスプランの取得および解析の詳細については、“SQLTOOLユーザーズガイド”を参照してください。
データベースに格納するレコードの件数やインデックスキーのバリエーションを事前に想定できない場合は、データベースに実際にデータが格納されたあとに最適化情報の設定を行うこともできます。
最適化情報とは、データの状況に応じてできるだけ効率のよいデータ処理を行うための情報です。最適化情報は、実表のDSIおよびインデックスのDSIに対して設定され、アプリケーションを実行する際に利用されます。最適化情報の内容は、実表のデータ件数、実表のDSIおよびインデックスのDSIの使用量などのデータベース内のデータ状況により変化する値の情報です。
最適化情報は、通常、格納構造の定義が完了したあとに、データベースに格納するレコードの件数やインデックスキーのバリエーションを想定して値を設定します。以下に設定契機を示します。
データベースの定義時
データベースの構成変更時
分割格納を行っている場合で表のDSIを追加する場合
インデックスを追加する場合
データを大量に追加または更新する場合
事前に想定した値で最適化情報を設定する場合、rdbddlexコマンドまたはrdbexecsqlコマンドを使用して、SET STATISTICS文で設定します。
参照
SET STATISTICS文の詳細については、“SQLリファレンス”を参照してください。
最適化情報は、表とインデックスに対してDSIごとに設定します。
最適化情報を、表やインデックスのDSOごとに設定することもできますが、この場合は、システムが指定された値をDSIごとの値に変換して設定します。したがって、DSIごとに最適化情報を設定することを推奨します。
表のDSIごとに設定する場合(データ構造:SEQUENTIAL)
SET STATISTICS FOR DSI 在庫表DSI RECORD(30000000) PAGE(150000) ↑ ↑ ↑ DSI名 レコード件数 使用ページ数
インデックスのDSIごとに設定する場合(データ構造:BTREE)
SET STATISTICS FOR DSI 製品番号IXDSI : ↑ : DSI名 : DIFFERENT KEY(10,100) INDEX HEIGHT( 2 ) PAGE( 5 ) ↑ ↑ ↑ 異なるキー値数 インデックスの 使用ページ数 高さ
設定方法により、設定する項目が異なります。設定する最適化情報の詳細を以下に示します。
表のDSI(SEQUENTIAL構造)
設定項目 | 設定内容 | 省略時の設定値 |
---|---|---|
レコード件数 | 格納するレコード件数を設定 | 省略不可 |
使用ページ数(DATA部) | DSIの容量見積りで算出した値を設定 | 最大レコード長でシステムが自動計算して設定 |
表のDSI(RANDOM構造)
設定項目 | 設定内容 | 省略時の設定値 |
---|---|---|
レコード件数 | 格納するレコード件数を設定 | 省略不可 |
使用ページ数(PRIME部) | DSIの容量見積りで算出した値を設定 | 最大レコード長でシステムが自動計算して設定 |
使用ページ数(OVERFLOW部) | (注1) | 0を設定 |
最大ページ数(OVERFLOW部) | (注1) | 0を設定 |
平均ページ数(OVERFLOW部) | (注1) | 0を設定 |
表のDSI(OBJECT構造)
設定項目 | 設定内容 | 省略時の設定値 |
---|---|---|
レコード件数 | 格納するレコード件数を設定 | 省略不可 |
使用ページ数(DATA部) | DSIの容量見積りで算出した値を設定 | 最大レコード長でシステムが自動計算して設定 |
インデックスのDSI(BTREE構造)
設定項目 | 設定内容 | 省略時の設定値 |
---|---|---|
使用ページ数(BASE部) | DSIの容量見積りで算出した値を設定 | 最大レコード長でシステムが自動計算して設定 |
インデックスの高さ | (注1) | 関連する表のレコード件数によりシステムが設定 |
異なるキー値数 | インデックスを構成する列の組合せごとの異なるキー値の数を設定(注2) | 省略不可 |
注1) 作成したデータベースが、以前にデータが格納されたあとに最適化情報を設定したデータベースと同じ構成であるなど、設定値が分かっている場合に設定します。
注2) 以下に設定例を示します。
インデックスを構成する列名が、それぞれ“部コード”および“課コード”であるとします。
列名“部コード”には10種類のコードが格納されており、“部コード”と“課コード”の組合せが100種類あるとします。この場合、設定する値は、10と100です。
設定項目 | 設定内容 | 省略時の設定値 |
---|---|---|
レコード件数 | 格納するレコード件数を設定 | 省略不可 |
備考.表がDSI分割されている場合は、指定された値をDSI数で割った値を各DSIに設定します。
設定項目 | 設定内容 | 省略時の設定値 |
---|---|---|
異なるキー値数 | インデックスを構成する列の組合せごとの異なるキー値の数を設定(注) | 省略不可 |
注) 以下に設定例を示します。
インデックスを構成する列名が、それぞれ“部コード”および“課コード”であるとします。
列名“部コード”には10種類のコードが格納されており、“部コード”と“課コード”の組合せが100種類あるとします。この場合、設定する値は、10と100です。
備考.表がDSI分割されている場合は、指定された値をDSI数で割った値を各DSIに設定します。
この計算結果が1以下となる場合は1を設定します。
設定した最適化情報を出力する場合、rdbddlexコマンドまたはrdbexecsqlコマンドを使用して、PRINT STATISTICS文で出力します。
参照
PRINT STATISTICS文の詳細については、“SQLリファレンス”を参照してください。
以下に指定例と出力例を示します。
表のDSIごとに設定した最適化情報の出力例(データ構造:SEQUENTIALまたはOBJECT)
Solaris/Linuxの場合
PRINT STATISTICS FOR DSI 在庫表DSI FILE /rdb2/statistics/DB01/在庫表DSI
Windowsの場合
PRINT STATISTICS FOR DSI 在庫表DSI FILE c:\rdb\data\在庫表DSI.txt
DATABASE = (1) +----------------------------SEQUENTIAL/OBJECT型DSI情報------+ | DSI = (2) | | RECORD = (3) | | PAGE = (4) | +------------------------------------------------------------+
(1) データベース名
(2) DSI名
(3) DSIに格納するレコード数
(4) レコードを格納するページ数
表のDSIごとに設定した最適化情報の出力例(データ構造:RANDOM)
Solaris/Linuxの場合
PRINT STATISTICS FOR DSI 在庫表DSI FILE /rdb2/statistics/DB01/在庫表DSI
Windowsの場合
PRINT STATISTICS FOR DSI 在庫表DSI FILE c:\rdb\data\在庫表DSI.txt
DATABASE = (1) +-----------------------------RANDOM型DSI情報------------+ | DSI = (2) | | RECORD = (3) | | PAGE = (4),(5) | | AVERAGE PAGE = (6) | | MAX PAGE = (7) | +--------------------------------------------------------+
(1) データベース名
(2) DSI名
(3) DSIに格納するレコード数
(4) レコードを格納するPRIME部のページ数
(5) レコードを格納するOVERFLOW部のページ数
(6) DSO定義のRULE指定(省略時はシステムで決定)により分類された各バケットの平均のOVERFLOW部のページ数(詳細は“第4章 格納構造”を参照してください。)
(7) DSO定義のRULE指定(省略時はシステムで決定)により分類された各バケットの最大のOVERFLOW部のページ数(詳細は“第4章 格納構造”を参照してください。)
インデックスのDSIごとに設定した最適化情報の出力例(データ構造:BTREE)
Solaris/Linuxの場合
PRINT STATISTICS FOR DSI 製品番号IXDSI FILE /rdb2/statistics/DB01/製品番号IXDSI
Windowsの場合
PRINT STATISTICS FOR DSI 製品番号IXDSI FILE c:\rdb\data\製品番号IXDSI.txt
DATABASE = (1) +-----------------------------BTREE型DSI情報--------------+ | DSI = (2) | | PAGE = (3) | | INDEX HEIGHT = (4) | | DIFFERENT KEY = (5) | | (5) | | : | +---------------------------------------------------------+
(1) データベース名
(2) DSI名
(3) レコードを格納するBASE部のページ数
(4) INDEX部の高さ(詳細は“第4章 格納構造”を参照してください。)
(5) インデックスを構成する列の異なるキー値の数
例:インデックスを構成する列が、“会社コード”、“部コード”および“課コード”であるとします。
この場合、出力される異なるキー値の情報は以下のようになります。
会社コードの異なるキー値の数
会社コードおよび部コードの組合せによる異なるキー値の数
会社コード、部コードおよび課コードの組合せによる異なるキー値の数
表ごとに設定した最適化情報の出力例(データ構造:SEQUENTIALまたはOBJECT)
Solaris/Linuxの場合
PRINT STATISTICS FOR TABLE STOCKS.在庫表 FILE /rdb2/statistics/DB01/在庫表
Windowsの場合
PRINT STATISTICS FOR TABLE STOCKS.在庫表 FILE c:\rdb\data\在庫表.txt
DATABASE = (1) SCHEMA = (2) TABLE = (3) +-----------------------------SEQUENTIAL/OBJECT型DSI情報------+ | (4) | +-------------------------------------------------------------+ +-----------------------------SEQUENTIAL/OBJECT型DSI情報------+ | (4) | +-------------------------------------------------------------+ : ~ ~ DSO = (5) +-----------------------------BTREE型DSI情報------------------+ | (6) | +-------------------------------------------------------------+ +-----------------------------BTREE型DSI情報------------------+ | (6) | +-------------------------------------------------------------+ : ~ ~ DSO = (5) +-----------------------------BTREE型DSI情報------------------+ | (6) | +-------------------------------------------------------------+ +-----------------------------BTREE型DSI情報------------------+ | (6) | +-------------------------------------------------------------+ :
(1) データベース名
(2) スキーマ名
(3) 表名
(4) 表を構成するDSIの最適化情報(表を構成するDSIの数分、出力されます)
(5) 表のインデックスのDSO名(インデックスのDSIの最適化情報(6)と合わせて表のインデックスのDSO数分、出力されます)
(6) インデックスのDSOを構成するDSIの最適化情報(インデックスのDSOを構成するDSIの数分出力されます)
表ごとに設定した最適化情報の出力例(データ構造:RANDOM)
Solaris/Linuxの場合
PRINT STATISTICS FOR TABLE STOCKS.在庫表 FILE /rdb2/statistics/DB01/在庫表
Windowsの場合
PRINT STATISTICS FOR TABLE STOCKS.在庫表 FILE c:\rdb\data\在庫表.txt
DATABASE = (1) SCHEMA = (2) TABLE = (3) +-----------------------------RANDOM型DSI情報-----------------+ | (4) | +-------------------------------------------------------------+ +-----------------------------RANDOM型DSI情報-----------------+ | (4) | +-------------------------------------------------------------+ : ~ ~ DSO = (5) +-----------------------------BTREE型DSI情報------------------+ | (6) | +-------------------------------------------------------------+ +-----------------------------BTREE型DSI情報------------------+ | (6) | +-------------------------------------------------------------+ : ~ ~ DSO = (5) +-----------------------------BTREE型DSI情報------------------+ | (6) | +-------------------------------------------------------------+ +-----------------------------BTREE型DSI情報------------------+ | (6) | +-------------------------------------------------------------+ :
(1) データベース名
(2) スキーマ名
(3) 表名
(4) 表を構成するDSIの最適化情報(表を構成するDSIの数分、出力されます)
(5) 表のインデックスのDSO名(インデックスのDSIの最適化情報(6)と合わせて表のインデックスのDSO数分、出力されます)
(6) インデックスのDSOを構成するDSIの最適化情報(インデックスのDSOを構成するDSIの数分出力されます)
インデックスのDSOごとに設定した最適化情報の出力例
Solaris/Linuxの場合
PRINT STATISTICS FOR INDEX 製品番号IXDSO FILE /rdb2/statistics/DB01/製品番号IXDSO
Windowsの場合
PRINT STATISTICS FOR INDEX 製品番号IXDSO FILE c:\rdb\data\製品番号IXDSO.txt
DATABASE = (1) DSO = (2) +-----------------------------BTREE型DSI情報-----------------+ | (3) | +------------------------------------------------------------+ +-----------------------------BTREE型DSI情報-----------------+ | (3) | +------------------------------------------------------------+ :
(1) データベース名
(2) インデックスのDSO名
(3) インデックスのDSOを構成するDSIの最適化情報(インデックスのDSOを構成するDSIの数分、出力されます)