Symfoware Parallel Server RDBユーザーズガイド 応用プログラム開発編 |
目次
索引
![]() ![]() |
第5章 応用プログラムの実行 |
最適化情報の更新とは、システム資源の使用状況の情報をRDBディクショナリ上に設定することです。その情報を利用することで、状況に応じた効率的なデータ処理を行うことができます。
本節では、最適化情報の概要とその更新について説明します。
最適化情報とは、データの状況に応じてできるだけ効率のよいデータ処理を行うための情報です。最適化情報は、実表のDSIおよびインデックスのDSIに対して設定され、応用プログラムを実行する際に利用されます。最適化情報の内容は、実表のデータ件数、インデックスの使用量やDSIの使用量などのデータベース内のデータ状況により変化する値の情報です。
表に対して、大量のデータを挿入または削除した場合には、rdbupsコマンドで最適化情報の更新を行ってください。目安としては、最後に最適化情報の更新を行った時点の50%程度のレコードが追加または削除された場合に、最適化情報の更新を行ってください。
最適化情報の更新は、実表やインデックスの個々のデータの更新のたびに自動的に行われるのではなく、rdbupsコマンドによって一括して更新されます。
rdbupsコマンドの指定方法の詳細については、manコマンドを利用して参照してください。
rdbupsコマンドによる最適化情報の更新には、以下の指定があります。
実表の指定
DSOの指定
DSIの指定
以下に、それぞれの指定について説明します。
実表に対するすべてのDSIに最適化情報を設定するには、rdbupsコマンドのtオプションで該当の実表名を指定します。
図:実表の指定例に指定例を示します。
$ rdbups -t 在庫管理DB.STOCKS.在庫表 -u PRINT (1) (2) |
(1) データベース名
(2) 実表名
DSOに関するすべてのDSIに最適化情報を設定するには、rdbupsコマンドのgオプションで該当のDSO名を指定します。
図:DSOの指定例に指定例を示します。
$ rdbups -g 在庫管理DB.発注表DSO -u PRINT (1) (2) |
(1) データベース名
(2) DSO名
特定のDSIに対する最適化情報を設定するには、rdbupsコマンドのiオプションで該当のDSI名を指定します。
図:DSIの指定例に指定例を示します。
$ rdbups -i 在庫管理DB.関西発注表DSI -u PRINT (1) (2) |
(1) データベース名
(2) DSI名
rdbupsコマンドで実表を指定した場合には、表に含まれるすべてのDSIに対して、最適化情報が設定されます。DSOを指定した場合には、DSOに含まれるすべてのDSIに対して、最適化情報が設定されます。DSIを指定した場合には、該当するDSIに対して、最適化情報が設定されます。設定される最適化情報の内容を、以下に示します。なお、設定される最適化情報は、格納構造によって異なります。各格納構造の詳細については、“RDBユーザーズガイド データベース定義編”を参照してください。
格納構造がSTRIPEの場合
STRIPE構造は、データを複数のデータベーススペースに対して、データ量がほぼ均等になるように格納する構造になっています。データは、データ部と呼ばれる領域のページに格納されます。
STRIPE構造に対しては、以下の情報が設定されます。
格納レコード数(DSIの全体)
データ部の使用ページ数(DSIの全体)
格納構造がSEQUENTIALの場合
SEQUENTIAL構造は、データをその挿入順に、先頭の格納ページから順に格納する構造になっています。データはデータ部と呼ばれる領域のページに格納されます。
SEQUENTIAL構造に対しては、以下の情報が設定されます。
格納レコード数
データ部の使用ページ数
格納構造がRANDOMの場合
RANDOM構造は、データに対してそのキーとなる列の組の値から格納ページの集まり(この集まりをバケットと呼びます)を計算し、そのバケットにデータを格納する構造になっています。計算に使用する関数をハッシュ関数と呼びます。データは通常はプライム部と呼ばれる領域のバケットに格納されますが、データがそのバケットに収まりきれないとき、オーバフロー部と呼ばれる領域のバケットに格納します。
RANDOM構造に対しては、以下の情報が設定されます。
格納レコード数
プライム部の使用ページ数
オーバフロー部の使用ページ数
オーバフロー部の平均ページ数
オーバフロー部の最大ページ数
格納構造がBTREEの場合
BTREE構造は、インデックスに対する格納構造です。内部的には、インデックスのキーとなる列の組の値からなる木構造のインデックス部を持ち、データを格納するページをインデックス部で管理します。データを格納するページからなる部分をインデックス部に対してデータ部と呼びます。
BTREE構造に対しては、以下の情報が設定されます。
データ部の使用ページ数
インデックス部の高さ
異なるキー値数
格納構造がHASHの場合
HASH構造は、表の格納構造がSTRIPE構造の場合のインデックスに対する格納構造です。インデックスのキーとなる列の組の値からなる木構造のインデックス部を持ち、データを格納するページをインデックス部で管理します。このインデックス部は、インデックスのキー値をハッシュした値を元に構成されており、インデックスデータの格納先を一意に決定します。データを格納するページからなる部分をインデックス部に対してデータ部と呼びます。
HASH構造に対しては、以下の情報が設定されます。
データ部の使用ページ数(「各セグメントごとの使用ページ数」の合計値)
インデックス部の高さ(「各セグメントごとのインデックス部の高さ」の最大値)
異なるキー値数(「各セグメントごとの異なるキー値数」の合計値)
最大異なるキー値数(「各セグメントごとの異なるキー値数」の最大値)
ここで、セグメントとは、DSIに割り付けられたデータベーススペースに対して、並列にアクセスする範囲のことをいいます。
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) * Max-pointers(OVERFLOW) ...... (14) (Page) *(注2) Ix_height ...... (15) * Different number of key value | Column name (from) : (16) | Column name (to) Different key *(注3) No. 1 (17) ...... (18) , (19) | No. 2 (17) ...... (18) , (19) | * No. 2 DSI name : (7) 〜 〜 No. 2 DSO name : (4) 〜注1) 表のDSIの場合にだけ表示されます。
注2) 表のデータ構造がRANDOM構造のDSIの場合にだけ表示されます。
注3) インデックスのDSIの場合にだけ表示されます。(19)およびその左側のコンマ(,)は、インデックスのデータ構造がHASH構造のDSIの場合にだけ表示されます。
(1) 表が所属するデータベース名
(2) 表が所属するスキーマ名
(3) 表名
(4) 表に定義されたDSO名
(5) 表に定義されたDSOの種別
BASE : 表のDSO
INDEX: インデックスのDSO
(6) 表またはインデックスのデータ構造
(7) DSOに定義されたDSI名
(8) 最適化情報の設定日時(“曜日 月 日 時:分:秒 西暦”)
例: “Mon Oct 1 17:06:25 2001”
備考.最適化情報が未設定の場合は、“Not updated" と出力します。
(9) DSOに定義されたDSIの種別
BASE : 表のDSI
INDEX: インデックスのDSI
(10) DSIの格納レコード(行)数
(11) ぺージ数の表示((12))が対象とする割付け部
(12) DSIが使用するぺージ数(割付け部ごとに表示)
(13) DSIのオーバフロー部の平均ポインタ長(単位はページ数)
(14) DSIのオーバフロー部の最大ポインタ長(単位はページ数) (15) インデックス部の高さ
(16) 異なるキー値数の表示((18)、(19))が対象とする構成列の先頭の列名
(17) 異なるキー値数の表示((18)、(19))が対象とする構成列の終端の列名
(18) DSIの異なるキー値数
(19) 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) * Max-pointers(OVERFLOW) ...... (12) (Page) *(注2) Ix_height ...... (13) * Different number of key value | Column name (from) : (14) | Column name (to) Different key *(注3) No. 1 (15) ...... (16) , (17) | No. 2 (15) ...... (16) , (17) | * No. 2 DSI name : (5) 〜 〜注1) 表のDSIの場合にだけ表示されます。
注2) 表のデータ構造がRANDOM構造のDSIの場合にだけ表示されます。
注3) インデックスのDSIの場合にだけ表示されます。(17)およびその左側のコンマ(,)は、インデックスのデータ構造がHASH構造のDSIの場合にだけ表示されます。
(1) DSOが所属するデータベース名
(2) DSO名
(3) DSOの種別
BASE : 表のDSO
INDEX: インデックスのDSO
(4) 表またはインデックスのデータ構造
(5) DSOに定義されたDSI名
(6) 最適化情報の設定日時(“曜日 月 日 時:分:秒 西暦”)
例: “Mon Oct 1 17:06:25 2001”
備考.最適化情報が未設定の場合は、“Not updated" と出力します。
(7) DSOに定義されたDSIの種別
BASE : 表のDSI
INDEX: インデックスのDSI
(8) DSIの格納レコード(行)数
(9) ぺージ数の表示((10))が対象とする割付け部
(10) DSIが使用するぺージ数(割付け部ごとに表示)
(11) DSIのオーバフロー部の平均ポインタ長(単位はページ数)
(12) DSIのオーバフロー部の最大ポインタ長(単位はページ数)
(13) インデックス部の高さ
(14) 異なるキー値数の表示((16)、(17))が対象とする構成列の先頭の列名
(15) 異なるキー値数の表示((16)、(17))が対象とする構成列の終端の列名
(16) DSIの異なるキー値数
(17) 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) * Max-pointers(OVERFLOW) ...... (9) (Page) *(注2) Ix_height ...... (10) * Different number of key value | Column name (from) : (11) | Column name (to) Different key *(注3) No. 1 (12) ...... (13) , (14) | No. 2 (12) ...... (13) , (14) | * Related DSO information No. 1 DSO name : (15) DSO statistics information Usage type : (16) Data structure type : (17) 〜 〜注1) 表のDSIの場合にだけ表示されます。
注2) 表のデータ構造がRANDOM構造のDSIの場合にだけ表示されます。
注3) インデックスのDSIの場合にだけ表示されます。(14)およびその左側のコンマ(,)は、インデックスのデータ構造がHASH構造のDSIの場合にだけ表示されます。
(1) DSIが所属するデータベース名
(2) DSI名
(3) 最適化情報の設定日時(“曜日 月 日 時:分:秒 西暦”)
例: “Mon Oct 1 17:06:25 2001”
備考.最適化情報が未設定の場合は、“Not updated" と出力します。
(4) DSIの種別
BASE : 表のDSI
INDEX: インデックスのDSI
(5) DSIの格納レコード(行)数
(6) ぺージ数の表示((7))が対象とする割付け部
(7) DSIが使用するぺージ数(割付け部ごとに表示)
(8) DSIのオーバフロー部の平均ポインタ長(単位はページ数)
(9) DSIのオーバフロー部の最大ポインタ長(単位はページ数)
(10) インデックス部の高さ
(11) 異なるキー値数の表示((13)、(14))が対象とする構成列の先頭の列名
(12) 異なるキー値数の表示((13)、(14))が対象とする構成列の終端の列名
(13) DSIの異なるキー値数
(14) DSIの最大異なるキー値数
(15) DSIが属するDSO名
(16) DSIが属するDSOの種別
BASE : 表のDSO
INDEX: インデックスのDSO
(17) 表またはインデックスのデータ構造
目次
索引
![]() ![]() |