Symfoware Server アプリケーション開発ガイド(埋込みSQL編) - FUJITSU - |
目次 索引 |
第6章 アプリケーションの実行 |
最適化情報は、通常は、データベース定義時にrdbddlexコマンドを使用してSET STATISTICS文で設定しますが、データベースにデータが格納された後にアクセス性能が悪くなった場合に更新することもできます。
最適化情報は、アクセスプランをチューニングしていない場合に設定できます。
通常は、データベースの定義時に、データベースに格納するデータの件数やインデックスキーのバリエーションを想定して、表のDSIおよびインデックスのDSIに対して設定します。また、運用しているうちに、データベースのアクセス性能が遅くなった場合、または、定義時に設定したデータ量に対して2倍程度になった場合に、最適化情報を更新します。これらの最適化情報の設定および更新は、rdbddlexコマンドを使用してSET STATISTICS文で行います。
データベース定義時に最適化情報を設定せずに表のDSIに対して初期創成を行ったとき、または、インデックスの定義を追加し、rdbsloaderコマンドでインデックスの創成を行ったときに最適化情報を設定することもできます。この場合も、rdbddlexコマンドを使用してSET STATISTICS文で行います。
設定方法の詳細については、“RDB運用ガイド(データベース定義編)”を参照してください。
すでにアクセスプランのチューニングをしている場合は、それ以降にデータの状態に変更があっても、最適化情報の設定および更新は必要ありません。最適化情報の設定および変更を行うと、すでにチューニング済のアクセスプランが利用できなくなり、性能が保証されません。
現在データベースに格納されているデータ量がわからない場合は、データベース情報をもとにrdbupsコマンドによって最適化情報を更新します。最適化情報の更新は、実表やインデックスの個々のデータの更新のたびに自動的に行われるのではなく、rdbupsコマンドによって一括して更新されます。実際にデータベースをアクセスして設定する情報を採取するためデータベースの規模に応じて処理時間が長くなります。
なお、rdbupsコマンドによって更新された最適化情報は、最大3回前までリカバリすることが可能です。
最適化情報をリカバリすると、リカバリ前の最適化情報には戻すことができないので注意してください。
rdbupsコマンドの指定方法の詳細については、“コマンドリファレンス”を参照してください。
rdbupsコマンドによる最適化情報の更新には、以下の指定があります。
実表の指定
DSOの指定
DSIの指定
以下に、それぞれの指定について説明します。
実表に対するすべてのDSIに最適化情報を設定するには、rdbupsコマンドのtオプションで該当の実表名を指定します。
以下に指定例を示します。
rdbups -t 在庫管理DB.STOCKS.在庫表 -u PRINT (1) (2) |
(1) データベース名
(2) 実表名
DSOに関するすべてのDSIに最適化情報を設定するには、rdbupsコマンドのgオプションで該当のDSO名を指定します。
以下に指定例を示します。
rdbups -g 在庫管理DB.発注表DSO -u PRINT (1) (2) |
(1) データベース名
(2) DSO名
特定のDSIに対する最適化情報を設定するには、rdbupsコマンドのiオプションで該当のDSI名を指定します。
以下に指定例を示します。
rdbups -I 在庫管理DB.関西発注表DSI -u PRINT (1) (2) |
(1) データベース名
(2) DSI名
rdbupsコマンドで実表を指定した場合には、表に含まれるすべてのDSIに対して、最適化情報が設定されます。DSOを指定した場合には、DSOに含まれるすべてのDSIに対して、最適化情報が設定されます。DSIを指定した場合には、該当するDSIに対して、最適化情報が設定されます。設定される最適化情報の内容を、以下に示します。なお、設定される最適化情報は、格納構造によって異なります。
各格納構造の詳細については、“RDB運用ガイド(データベース定義編)”を参照してください。
格納構造がSEQUENTIALおよびOBJECTの場合
SEQUENTIAL構造およびOBJECT構造は、データをその挿入順に、先頭の格納ページから順に格納する構造になっています。データはデータ部と呼ばれる領域のページに格納されます。
SEQUENTIAL構造およびOBJECT構造に対しては、以下の情報が設定されます。
格納レコード数
データ部の使用ページ数
格納構造がRANDOMの場合
RANDOM構造は、データに対してそのキーとなる列の組の値から格納ページの集まり(この集まりをバケットと呼びます)を計算し、そのバケットにデータを格納する構造になっています。計算に使用する関数をハッシュ関数と呼びます。データは通常はプライム部と呼ばれる領域のバケットに格納されますが、データがそのバケットに収まりきれないとき、オーバフロー部と呼ばれる領域のバケットに格納します。
RANDOM構造に対しては、以下の情報が設定されます。
格納レコード数
プライム部の使用ページ数
オーバフロー部の使用ページ数
オーバフロー部の平均ページ数
オーバフロー部の最大ページ数
格納構造がBTREEの場合
BTREE構造は、インデックスに対する格納構造です。内部的には、インデックスのキーとなる列の組の値からなる木構造のインデックス部を持ち、データを格納するページをインデックス部で管理します。データを格納するページからなる部分をインデックス部に対してデータ部と呼びます。
BTREE構造に対しては、以下の情報が設定されます。
データ部の使用ページ数
インデックス部の高さ
異なるキー値数
rdbupsコマンドでu PRINTを指定すると、設定した最適化情報を出力することができます。以下に指定例と出力例を示します。
例1
実表の指定をした場合の出力例(tオプション)rdbups -t 在庫管理DB.STOCKS.関西発注表 -u PRINT
Update statistics information Target name information Database name ...... (1) Schema name ...... (2) Table name ...... (3) No. 1 DSO name : (4) DSO statistics information Usage type : (5) Data structure type : (6) Related DSI information No. 1 DSI name : (7) DSI statistics information Updated date ...... (8) Usage type : (9) Records ...... (10) (Record) (注1) Pages( (11) ) ...... (12) (Page) Pages( (11) ) ...... (12) (Page) Avg-pointers(OVERFLOW) ...... (13) (Page) (注2) Max-pointers(OVERFLOW) ...... (14) (Page) (注2) Ix_height ...... (15) (注3) Different number of key value (注3) Column name (from) : (16) (注3) Column name (to) Different key (注3) No. 1 (17) ...... (18) (注3) No. 2 (17) ...... (18) (注3) No. 2 DSI name : (7) : No. 2 DSO name : (4) :注1) 表のDSIの場合にだけ表示されます。
注2) 表のデータ構造がRANDOM構造のDSIの場合にだけ表示されます。
注3) インデックスのDSIの場合にだけ表示されます。
(1) 表が所属するデータベース名
(2) 表が所属するスキーマ名
(3) 表名
(4) 表に定義されたDSO名
(5) 表に定義されたDSOの種別BASE : 表のDSOINDEX: インデックスのDSO
(6) 表またはインデックスのデータ構造
(7) DSOに定義されたDSI名
(8) 最適化情報の設定日時(“曜日 月 日 時:分:秒 西暦”)例: “Tue Apr 17 17:06:25 2007”備考.最適化情報が未設定の場合は、"Not updated" と出力します。
(9) DSOに定義されたDSIの種別BASE : 表のDSIINDEX: インデックスのDSI
(10) DSIの格納レコード(行)数
(11) ぺージ数の表示(12)が対象とする割付け部
(12) DSIが使用するぺージ数(割付け部ごとに表示)
(13) DSIのオーバフロー部の平均ポインタ長(単位はページ数)
(14) DSIのオーバフロー部の最大ポインタ長(単位はページ数)
(15) インデックス部の高さ
(16) 異なるキー値数の表示(18)が対象とする構成列の先頭の列名
(17) 異なるキー値数の表示(18)が対象とする構成列の終端の列名
(18) DSIの異なるキー値数
例2
DSOの指定をした場合の出力例(gオプション)rdbups -g 在庫管理DB.関西発注表DSO -u PRINT
Update statistics information Target name information Database name ...... (1) DSO name ...... (2) No. 1 DSO name : (2) DSO statistics information Usage type : (3) Data structure type : (4) Related DSI information No. 1 DSI name : (5) DSI statistics information Updated date ...... (6) Usage type : (7) Records ...... (8) (Record) (注1) Pages( (9) ) ...... (10) (Page) Pages( (9) ) ...... (10) (Page) Avg-pointers(OVERFLOW) ...... (11) (Page) (注2) Max-pointers(OVERFLOW) ...... (12) (Page) (注2) Ix_height ...... (13) (注3) Different number of key value Column name (from) : (14) (注3) Column name (to) Different key No. 1 (15) ...... (16) (注3) No. 2 (15) ...... (16) (注3) No. 2 DSI name : (5) :注1) 表のDSIの場合にだけ表示されます。
注2) 表のデータ構造がRANDOM構造のDSIの場合にだけ表示されます。
注3) インデックスのDSIの場合にだけ表示されます。
(1) DSOが所属するデータベース名
(2) DSO名
(3) DSOの種別BASE : 表のDSOINDEX: インデックスのDSO
(4) 表またはインデックスのデータ構造
(5) DSOに定義されたDSI名
(6) 最適化情報の設定日時(“曜日 月 日 時:分:秒 西暦”)例: “Tue Apr 17 17:06:25 2007”備考.最適化情報が未設定の場合は、"Not updated" と出力します。
(7) DSOに定義されたDSIの種別BASE : 表のDSIINDEX: インデックスのDSI
(8) DSIの格納レコード(行)数
(9) ぺージ数の表示(10)が対象とする割付け部
(10) DSIが使用するぺージ数(割付け部ごとに表示)
(11) DSIのオーバフロー部の平均ポインタ長(単位はページ数)
(12) DSIのオーバフロー部の最大ポインタ長(単位はページ数)
(13) インデックス部の高さ
(14) 異なるキー値数の表示(16)が対象とする構成列の先頭の列名
(15) 異なるキー値数の表示(16)が対象とする構成列の終端の列名
(16) DSIの異なるキー値数
例3
DSIの指定をした場合の出力例(iオプション)rdbups -i 在庫管理DB.関西発注表DSI -u PRINT
Update statistics information Target name information Database name ...... (1) DSI name ...... (2) No. 1 DSI name : (2) DSI statistics information Updated date ...... (3) Usage type : (4) Records ...... (5) (Record) (注1) Pages( (6) ) ...... (7) (Page) Pages( (6) ) ...... (7) (Page) Avg-pointers(OVERFLOW) ...... (8) (Page) (注2) Max-pointers(OVERFLOW) ...... (9) (Page) (注2) Ix_height ...... (10) (注3) Different number of key value Column name (from) : (11) (注3) Column name (to) Different key No. 1 (12) ...... (13) (注3) No. 2 (12) ...... (13) (注3) Related DSO information No. 1 DSO name : (14) DSO statistics information Usage type : (15) Data structure type : (16)注1) 表のDSIの場合にだけ表示されます。
注2) 表のデータ構造がRANDO構造のDSIの場合にだけ表示されます。
注3) インデックスのDSIの場合にだけ表示されます。
(1) DSIが所属するデータベース名
(2) DSI名
(3) 最適化情報の設定日時(“曜日 月 日 時:分:秒 西暦”)例 : “Tue Apr 17 17:06:25 2007”備考.最適化情報が未設定の場合は、"Not updated" と出力します。
(4) DSIの種別BASE : 表のDSIINDEX : インデックスのDSI
(5) DSIの格納レコード(行)数
(6) ぺージ数の表示(7)が対象とする割付け部
(7) DSIが使用するぺージ数(割付け部ごとに表示)
(8) DSIのオーバフロー部の平均ポインタ長(単位はページ数)
(9) DSIのオーバフロー部の最大ポインタ長(単位はページ数)
(10) インデックス部の高さ
(11) 異なるキー値数の表示(13)が対象とする構成列の先頭の列名
(12) 異なるキー値数の表示(13)が対象とする構成列の終端の列名
(13) DSIの異なるキー値数
(14) DSIが属するDSO名
(15) DSIが属するDSOの種別BASE : 表のDSOINDEX : インデックスのDSO
(16) 表またはインデックスのデータ構造
目次 索引 |