Symfoware(R) Server RDBユーザーズガイド データベース定義編 - FUJITSU - |
目次 索引 |
データベースを効率よくアクセスするために、最適化情報の設定を行います。最適化情報は、格納構造の定義が完了した後に、データベースに格納するレコードの件数やインデックスキーのバリエーションを想定して値を設定します。
最適化情報を設定後、アクセスプランを取得し、解析します。これによって、データベースを適切にチューニングすることができます。一度アクセスプランによってチューニングしたあとは、それ以降にデータの状態に変更があっても、最適化情報の設定および更新は必要ありません。アクセスプランの取得および解析の詳細については、“SQLTOOLユーザーズガイド”を参照してください。
データベースに格納するレコードの件数やインデックスキーのバリエーションを事前に想定できない場合は、データベースに実際にデータが格納されたあとに最適化情報の設定を行うこともできます。
最適化情報とは、データの状況に応じてできるだけ効率のよいデータ処理を行うための情報です。最適化情報は、実表のDSIおよびインデックスのDSIに対して設定され、応用プログラムを実行する際に利用されます。最適化情報の内容は、実表のデータ件数、実表のDSIおよびインデックスのDSIの使用量などのデータベース内のデータ状況により変化する値の情報です。
最適化情報は、通常、格納構造の定義が完了した後に、データベースに格納するレコードの件数やインデックスキーのバリエーションを想定して値を設定します。以下に設定契機を示します。
事前に想定した値で最適化情報を設定する場合、rdbddlexコマンドを使用して、SET STATISTICS文で設定します。SET STATISTICS文の詳細については、“SQLリファレンスガイド”を参照してください。
最適化情報は、表とインデックスに対してDSIごとに設定します。
最適化情報を、表やインデックスのDSOごとに設定することもできますが、この場合は、システムが指定された値をDSIごとの値に変換して設定します。したがって、DSIごとに最適化情報を設定することを推奨します。
以下に最適化情報の設定例を示します。
SET STATISTICS FOR DSI 在庫表DSI RECORD(30000000) PAGE(150000) ↑ ↑ ↑ DSI名 レコード件数 使用ページ数 |
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コマンドを使用して、PRINT STATISTICS文で出力します。PRINT STATISTICS文の詳細については、“SQLリファレンスガイド”を参照してください。
以下に指定例と出力例を示します。
例1
表のDSIごとに設定した最適化情報の出力例(データ構造:SEQUENTIALまたはOBJECT)(1) データベース名
(2) DSI名
(3) DSIに格納するレコード数
(4) レコードを格納するページ数
例2
表のDSIごとに設定した最適化情報の出力例(データ構造:RANDOM)(1) データベース名
(2) DSI名
(3) DSIに格納するレコード数
(4) レコードを格納するPRIME部のページ数
(5) レコードを格納するOVERFLOW部のページ数
(6) DSO定義のRULE指定(省略時はシステムで決定)により分類された各バケットの平均のOVERFLOW部のページ数(詳細は“格納構造”を参照してください。)
(7) DSO定義のRULE指定(省略時はシステムで決定)により分類された各バケットの最大のOVERFLOW部のページ数(詳細は“格納構造”を参照してください。)
例3
インデックスのDSIごとに設定した最適化情報の出力例(データ構造:BTREE)(1) データベース名
(2) DSI名
(3) レコードを格納するBASE部のページ数
(4) INDEX部の高さ(詳細は“格納構造”を参照してください。)
(5) インデックスを構成する列の異なるキー値の数
例:インデックスを構成する列が、“会社コード”、“部コード”および“課コード”であるとします。
この場合、出力される異なるキー値の情報は以下のようになります。
- 会社コードの異なるキー値の数
- 会社コードおよび部コードの組合わせによる異なるキー値の数
- 会社コード、部コードおよび課コードの組合わせによる異なるキー値の数
例4
表ごとに設定した最適化情報の出力例(データ構造:SEQUENTIALまたはOBJECT)(1) データベース名
(2) スキーマ名
(3) 表名
(4) 表を構成するDSIの最適化情報(表を構成するDSIの数分、出力されます)
(5) 表のインデックスのDSO名(インデックスのDSIの最適化情報(6)と合わせて表のインデックスのDSO数分、出力されます)
(6) インデックスのDSOを構成するDSIの最適化情報(インデックスのDSOを構成するDSIの数分出力されます)
例5
表ごとに設定した最適化情報の出力例(データ構造:RANDOM)(1) データベース名
(2) スキーマ名
(3) 表名
(4) 表を構成するDSIの最適化情報(表を構成するDSIの数分、出力されます)
(5) 表のインデックスのDSO名(インデックスのDSIの最適化情報(・)と合わせて表のインデックスのDSO数分、出力されます)
(6) インデックスのDSOを構成するDSIの最適化情報(インデックスのDSOを構成するDSIの数分出力されます)
例6
インデックスのDSOごとに設定した最適化情報の出力例(1) データベース名
(2) インデックスのDSO名
(3) インデックスのDSOを構成するDSIの最適化情報(インデックスのDSOを構成するDSIの数分、出力されます)
目次 索引 |