ページの先頭行へ戻る
PRIMEFLEX for HA Database 業務開発ガイド(Native SQL編)
FUJITSU Integrated System

3.3.10 最適化情報の設定

データベースを効率よくアクセスするために、最適化情報の設定を行います。最適化情報は、格納構造の定義が完了したあとに、データベースに格納するレコードの件数やインデックスキーのバリエーションを想定して値を設定します。

最適化情報を設定後、アクセスプランを取得し、解析します。これによって、データベースを適切にチューニングすることができます。一度アクセスプランによってチューニングしたあとは、それ以降にデータの状態に変更があっても、最適化情報の設定および更新は必要ありません。

参照

アクセスプランの取得および解析の詳細については、“Symfoware Server SQLTOOLユーザーズガイド”を参照してください。

データベースに格納するレコードの件数やインデックスキーのバリエーションを事前に想定できない場合は、データベースに実際にデータが格納されたあとに最適化情報の設定を行うこともできます。

最適化情報とは

最適化情報とは、データの状況に応じてできるだけ効率のよいデータ処理を行うための情報です。最適化情報は、実表のDSIおよびインデックスのDSIに対して設定され、アプリケーションを実行する際に利用されます。最適化情報の内容は、実表のデータ件数、実表のDSIおよびインデックスのDSIの使用量などのデータベース内のデータ状況により変化する値の情報です。

最適化情報の設定契機

最適化情報は、通常、格納構造の定義が完了したあとに、データベースに格納するレコードの件数やインデックスキーのバリエーションを想定して値を設定します。以下に設定契機を示します。

事前に想定した値で最適化情報を設定する場合
  • データベースの定義時

  • データベースの構成変更時

    • 分割格納を行っている場合で表のDSIを追加する場合

    • インデックスを追加する場合

    • データを大量に追加または更新する場合

最適化情報の設定方法

事前に想定した値で最適化情報を設定する場合、rdbddlexコマンドを使用して、SET STATISTICS文で設定します。

参照

SET STATISTICS文の詳細については、“Symfoware Server SQLリファレンス”を参照してください。

最適化情報は、表とインデックスに対してDSIごとに設定します。

最適化情報を、表やインデックスのDSOごとに設定することもできますが、この場合は、システムが指定された値をDSIごとの値に変換して設定します。したがって、DSIごとに最適化情報を設定することを推奨します。

以下に最適化情報の設定例を示します。

設定方法により、設定する項目が異なります。設定する最適化情報の詳細を以下に示します。

DSIごとに設定する場合

表のDSI(SEQUENTIAL構造)

設定項目

設定内容

省略時の設定値

レコード件数

格納するレコード件数を設定

省略不可

使用ページ数(DATA部)

DSIの容量見積りで算出した値を設定

最大レコード長でシステムが自動計算して設定

インデックスのDSI(BTREE構造)

設定項目

設定内容

省略時の設定値

使用ページ数(BASE部)

DSIの容量見積りで算出した値を設定

最大レコード長でシステムが自動計算して設定

インデックスの高さ

(注1)

関連する表のレコード件数によりシステムが設定

異なるキー値数

インデックスを構成する列の組合せごとの異なるキー値の数を設定(注2)

省略不可

注1) 作成したデータベースが、以前にデータが格納されたあとに最適化情報を設定したデータベースと同じ構成であるなど、設定値が分かっている場合に設定します。

注2) 以下に設定例を示します。

インデックスを構成する列名が、それぞれ“部コード”および“課コード”であるとします。

列名“部コード”には10種類のコードが格納されており、“部コード”と“課コード”の組合せが100種類あるとします。この場合、設定する値は、10と100です。

表ごとに設定する場合

設定項目

設定内容

省略時の設定値

レコード件数

格納するレコード件数を設定

省略不可

備考.表がDSI分割されている場合は、指定された値をDSI数で割った値を各DSIに設定します。

インデックスのDSOごとに設定する場合

設定項目

設定内容

省略時の設定値

異なるキー値数

インデックスを構成する列の組合せごとの異なるキー値の数を設定(注)

省略不可

注) 以下に設定例を示します。

インデックスを構成する列名が、それぞれ“部コード”および“課コード”であるとします。

列名“部コード”には10種類のコードが格納されており、“部コード”と“課コード”の組合せが100種類あるとします。この場合、設定する値は、10と100です。

備考.表がDSI分割されている場合は、指定された値をDSI数で割った値を各DSIに設定します。

この計算結果が1以下となる場合は1を設定します。

最適化情報の出力

設定した最適化情報を出力する場合、rdbddlexコマンドを使用して、PRINT STATISTICS文で出力します。

参照

PRINT STATISTICS文の詳細については、“Symfoware Server SQLリファレンス”を参照してください。


以下に指定例と出力例を示します。

例1

表のDSIごとに設定した最適化情報の出力例(データ構造:SEQUENTIAL)

PRINT STATISTICS FOR DSI 在庫表DSI FILE /disk3/rdb/data/在庫表DSI

     DATABASE    =      (1)
  +----------------------------SEQUENTIAL型DSI情報-------------+
  |  DSI         =      (2)                                    |
  |  RECORD      =      (3)                                    |
  |  PAGE        =      (4)                                    |
  +------------------------------------------------------------+

(1) データベース名

(2) DSI名

(3) DSIに格納するレコード数

(4) レコードを格納するページ数

例2

インデックスのDSIごとに設定した最適化情報の出力例(データ構造:BTREE)

PRINT STATISTICS FOR DSI 製品番号IXDSI FILE /disk3/rdb/data/製品番号IXDSI

     DATABASE       =    (1)
  +-----------------------------BTREE型DSI情報--------------+
  |  DSI            =    (2)                                |
  |  PAGE           =    (3)                                |
  |  INDEX HEIGHT   =    (4)                                |
  |  DIFFERENT KEY  =    (5)                                |
  |                      (5)                                |
  |                 :                                       |
  +---------------------------------------------------------+

(1) データベース名

(2) DSI名

(3) レコードを格納するBASE部のページ数

(4) INDEX部の高さ(詳細は“3.5 格納構造”を参照してください。)

(5) インデックスを構成する列の異なるキー値の数

例:インデックスを構成する列が、“会社コード”、“部コード”および“課コード”であるとします。

この場合、出力される異なるキー値の情報は以下のようになります。

  • 会社コードの異なるキー値の数

  • 会社コードおよび部コードの組合せによる異なるキー値の数

  • 会社コード、部コードおよび課コードの組合せによる異なるキー値の数


例3

表ごとに設定した最適化情報の出力例(データ構造:SEQUENTIAL)

PRINT STATISTICS FOR TABLE STOCKS.在庫表 FILE /disk3/rdb/data/在庫表

  DATABASE      =    (1)
  SCHEMA        =    (2)
  TABLE         =    (3)
 +-----------------------------SEQUENTIAL型DSI情報------+
 |                   (4)                                       |
 +-------------------------------------------------------------+
 +-----------------------------SEQUENTIAL型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の数分出力されます)


例4

インデックスのDSOごとに設定した最適化情報の出力例

PRINT STATISTICS FOR INDEX 製品番号IXDSO FILE /disk3/rdb/data/製品番号IXDSO

     DATABASE      =    (1)
     DSO           =    (2)
  +-----------------------------BTREE型DSI情報-----------------+
  |                     (3)                                    |
  +------------------------------------------------------------+
  +-----------------------------BTREE型DSI情報-----------------+
  |                     (3)                                    |
  +------------------------------------------------------------+
                   :

(1) データベース名

(2) インデックスのDSO名

(3) インデックスのDSOを構成するDSIの最適化情報(インデックスのDSOを構成するDSIの数分、出力されます)