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

4.1.2 最適化情報の更新

最適化情報は、通常は、データベース定義時にrdbddlexコマンドを使用してSET STATISTICS文で設定しますが、データベースにデータが格納された後にアクセス性能が悪くなった場合に更新することもできます。

最適化情報の更新契機

最適化情報は、アクセスプランをチューニングしていない場合に設定できます。

通常は、データベースの定義時に、データベースに格納するデータの件数やインデックスキーのバリエーションを想定して、表のDSIおよびインデックスのDSIに対して設定します。また、運用しているうちに、データベースのアクセス性能が遅くなった場合、または、定義時に設定したデータ量に対して2倍程度になった場合に、最適化情報を更新します。これらの最適化情報の設定および更新は、rdbddlexコマンドを使用してSET STATISTICS文で行います。

データベース定義時に最適化情報を設定せずに表のDSIに対して初期創成を行ったとき、または、インデックスの定義を追加し、rdbsloaderコマンドでインデックスの創成を行ったときに最適化情報を設定することもできます。この場合も、rdbddlexコマンドを使用してSET STATISTICS文で行います。

設定方法の詳細については、“3.3.10 最適化情報の設定”を参照してください。

注意

すでにアクセスプランのチューニングをしている場合は、それ以降にデータの状態に変更があっても、最適化情報の設定および更新は必要ありません。

最適化情報の設定および変更を行うと、すでにチューニング済のアクセスプランが利用できなくなり、性能が保証されません。

rdbupsコマンドによる最適化情報の更新

現在データベースに格納されているデータ量が分からない場合は、データベース情報をもとにrdbupsコマンドによって最適化情報を更新します。最適化情報の更新は、実表やインデックスの個々のデータの更新のたびに自動的に行われるのではなく、rdbupsコマンドによって一括して更新されます。実際にデータベースをアクセスして設定する情報を採取するためデータベースの規模に応じて処理時間が長くなります。
なお、rdbupsコマンドによって更新された最適化情報は、最大3回前までリカバリすることが可能です。

注意

  • 最適化情報をリカバリすると、リカバリ前の最適化情報には戻すことができないので注意してください。

  • rdbupsコマンド実行中にログファイルが満杯になると、rdbupsコマンドはログが満杯の状態が解除されるまで処理待ちとなるため注意が必要です。処理待ちとなった場合、Appliance Managerでリカバリーを実施することにより処理待ちを解除できます。

参照

rdbupsコマンドの指定方法の詳細については、“Symfoware Server コマンドリファレンス”を参照してください。

最適化情報を更新するには、rdbupsコマンドのtオプションで該当の表名を指定します。指定例を以下に示します。

$ rdbups -t 在庫管理DB.在庫スキーマ.在庫表
                 (1)          (2)       (3)

(1) データベース名

(2) スキーマ名

(3) 表名

該当する表のDSIおよびインデックスのDSIに対して設定される最適化情報の内容を、以下に示します。

格納構造

最適化情報の内容

SEQUENTIAL

格納レコード数

データ部の使用ページ数

BTREE

データ部の使用ページ数

インデックス部の高さ

異なるキー値数

格納構造の詳細については、“3.5 格納構造”を参照してください。

例1

設定した最適化情報を出力するには、rdbupsコマンドでuオプションのPRINTを指定します。指定例と出力例を以下に示します。

$ rdbups -t 在庫管理DB.在庫スキーマ.在庫表 -u PRINT
                                                (1)

(1) 出力指定

Update statistics information

  Target name information

    Database name ...... 在庫管理DB                 (1)
    Schema name   ...... 在庫スキーマ                 (2)
    Table name    ...... 在庫表                       (3)

No. 1         DSO name : 在庫表DSO                 (4)

  DSO statistics information

    Usage type          : BASE                        (5)
    Data structure type : SEQUENTIAL                  (6)

  Related DSI information

    No. 1         DSI name : 在庫表DSI             (7)

      DSI statistics information

        Updated date ...... Sun Apr 08 16:54:18 2007  (8)
        Usage type : BASE                             (9)
        Records                ...... 100 (Record)    (10)
        Pages(DATA)            ...... 70 (Page)       (11)

                :

(1) データベース名

(2) スキーマ名

(3) 表名

(4) 表に定義されたDSO名

(5) 表に定義されたDSOの種別
BASE : 表のDSO
INDEX: インデックスのDSO

(6) 表またはインデックスのデータ構造

(7) DSOに定義されたDSI名

(8) 最適化情報の設定日時
(最適化情報が未設定の場合は、“Not updated”と出力します)

(9) DSOに定義されたDSIの種別
BASE : 表のDSI
INDEX: インデックスのDSI

(10) DSIの格納レコード(行)数

(11) DSIが使用するぺージ数(割付け部ごとに表示)

例2

変更前の最適化情報を出力するには、rdbupsコマンドでRオプションおよびcオプションを指定します。指定例と出力例を以下に示します。

$ rdbups -t 在庫管理DB.在庫スキーマ.在庫表 -R -c
                                              (1)

(1) 変更前最適化情報出力指定

Update statistics information

  Target name information

    Database name ...... 在庫管理DB                 (1)
    Schema name   ...... 在庫スキーマ                 (2)
    Table name    ...... 在庫表                       (3)

No. 1         DSO name : 在庫表DSO                 (4)

  DSO statistics information

    Usage type          : BASE                        (5)
    Data structure type : SEQUENTIAL                  (6)

  Related DSI information

    No. 1         DSI name : 在庫表DSI             (7)

      DSI statistics information ...... No. 1         (8)

        Updated date ...... Sun Apr 08 16:54:18 2007  (9)
        Usage type : BASE                             (10)
        Records                ...... 100 (Record)    (11)
        Pages(DATA)            ...... 70 (Page)       (12)


      DSI statistics information ...... No. 2         (8)

                :

(1) データベース名

(2) スキーマ名

(3) 表名

(4) 表に定義されたDSO名

(5) 表に定義されたDSOの種別
BASE : 表のDSO
INDEX: インデックスのDSO

(6) 表またはインデックスのデータ構造

(7) DSOに定義されたDSI名

(8) DSIの変更前の最適化情報
(1回前、2回前、3回前の順で表示されます。)

(9) 最適化情報の設定日時
(最適化情報が未設定の場合は、“Not updated”と出力します)

(10) DSOに定義されたDSIの種別
BASE : 表のDSI
INDEX: インデックスのDSI

(11) DSIの格納レコード(行)数

(12) DSIが使用するぺージ数(割付け部ごとに表示)