16.5.5 UAP統計レポート機能
UAP実行時のUAP統計レポートをUAP統計レポートファイルに取得します。
次に示すSDBデータベースを操作するためのAPIまたはDMLを実行した場合,UAP統計レポートを参照すると,アクセスパス情報および位置指示子情報を特定できます。
-
レコードの検索(FETCH)
-
位置指示子の位置づけ(FIND)
-
複数レコードの検索(FETCHDB ALL)
-
レコードの格納(STORE)
-
レコードの更新(MODIFY)
-
レコードの削除(ERASE)
-
レコードの取得(GET)
-
レコードの一括削除
-
構成情報取得
- 注意事項
-
次のAPIまたはDMLの場合は,アクセスパス情報と位置指示子情報は出力されません。
-
ユティリティが内部的に実行したAPIまたはDML
-
エラーが発生したAPIまたはDML
-
終端検知(レコードの検索時に最終のレコードかどうかを判定する)のためにHiRDB/SDが内部的に実行したAPI
-
UAP統計レポートの詳細については,マニュアル「HiRDB UAP開発ガイド」の「UAP統計レポート機能」を参照してください。
- 〈この項の構成〉
(1) UAP統計レポートの取得方法
UAP統計レポートは,クライアント環境定義のPDCLTPATH,PDSQLTRACE,およびPDUAPREPLVL(pまたはa指定)を設定すると取得できます。
(2) UAP統計レポートの見方
UAP統計レポートの見方については,マニュアル「HiRDB UAP開発ガイド」の「UAP統計レポートの見方」を参照してください。なお,「SQL文」は,「SDBデータベースを操作するAPI」または「DML」に読み替えてください。
SDBデータベースを操作するAPIまたはDMLの実行時に出力される情報の出力形式とその説明を次に示します。
サポートしていない情報が設定されていた場合は,'(UNK)'が出力されます。
(a) アクセスパス情報
- [出力形式]
Result of DML Optimizer : EXEC ID :aa...a-bb...b-cc...c-dd...d -------------------------------------------------------------------------------- # DML Type : ee...e Record Name : ff...f Set Name : yy...y Bes Name : gg...g RDAREA : hh...h[iiiiiiiiii] Pointer Code: jj...j Direction : kk...k Poniter Opt : BB...B Insert Code : ll...l KEYDATA : mm...m Index Name : nn...n SearchCnd : oo...o [pp...p] KeyCnd : qq...q RowCnd : {AA...A} Parameter : (rr...r)ss...s[,(rr...r)ss...s]... SearchStatus: tt...t UnusedLen : uu...u Record List : vv...v(ww...w)[,vv...v(ww...w)]...
SDBデータベースを操作するAPIまたはDMLの指定内容によっては表示されない項目があります。
- [出力例]
Result of DML Optimizer : EXEC ID : 1-1-1-1 -------------------------------------------------------------------------------- # DML Type : FETCH Record Name : FMB1000 Bes Name : testbesw RDAREA : RDAREA74[0x00000014] Pointer Code: F Direction : 0x00 KEYDATA : 0x3030303031313131 Index Name : FMB1IDX1 SearchCnd : RANGE(CS-CE) [(?(1),MIN),(MAX,MAX)] KeyCnd : FMB1000.KEYDATA2=?(2) AND FMB1000.KEYDATA1>?(1) RowCnd : {(FMB1000.USERDA0>?(3))} Parameter : (1)0x00000001, (2)0x31313131, (3)0x00000000
- [説明]
-
出力内容
説明
SDBデータベースのアクセスパス情報が表示されます。
EXEC ID
各IDの情報が表示されます。
それぞれ出力文字数は最大10バイトです。
各IDは,トランザクション開始時に1から開始し,要求ごとに1ずつ増え,最大値4,294,967,295まで増えます。最大値の次の値は0になります。
-
SDBハンドラの要求ごとに割り振られたブロックID
出力対象外となっている個別開始・個別終了もカウントされます。
-
SDBデータベース内でフロントエンドサーバからバックエンドサーバへ,SDBデータベースを操作するAPIまたはDMLを送信した回数を示すCALL ID
-
SDBハンドラの要求の中のSDBデータベースを操作するAPIまたはDMLごとに割り振られたDML ID
-
SDBデータベース内で実行した,SDBデータベースを操作するAPIまたはDMLごとに割り振られたEXEC ID
DML Type
SDBデータベース内で実行したデータベース操作(出力文字数は最大11バイト)
-
FETCH:レコードの検索,または位置指示子の位置づけ※1
-
STORE:レコードの格納
-
ERASE:レコードの削除
-
MODIFY:レコードの更新
-
NULLIFY:位置指示子への空値設定
-
FETCHDB ALL:複数レコードの検索
-
GET:レコードの取得
Record Name※2
操作対象のレコード型名(出力文字数は最大30バイト)
複数レコードの検索(FETCHDB ALL)の場合はルートレコード型名が表示されます。
Set Name※2
親子集合型名(出力文字数は最大30バイト)
DML TypeがNULLIFYの場合に表示されることがあります。
Bes Name
操作対象のバックエンドサーバ名(出力文字数は最大8バイト)
RDAREA
次の情報が表示されます。
DML TypeがNULLIFYの場合は表示されません。
-
操作対象のRDエリア名(インナレプリカ機能使用時はオリジナルRDエリア名)(出力文字数は最大30バイト)
-
操作対象のRDエリアID(16進数形式)(出力文字数は最大10バイト)
Pointer Code
HiRDB/SD内で実行された指示コード(出力文字数は最大4バイト)
文字として表示できない場合は16進形式で表示されます。
Direction
HiRDB/SD内で実行された検索コード(出力文字数は最大4バイト)
文字として表示できない場合は16進形式で表示されます。
レコードの検索時(FETCH),または位置指示子の位置づけ(FIND)のときに指示コードにU以外が指定されている場合,0x00が表示されます。
Pointer Opt
HiRDB/SD内で実行したポインタオプション(出力文字数は最大4バイト)
文字として表示できない場合は16進形式で表示されます。
Insert Code
HiRDB/SD内で実行した挿入位置検索の種別
ORDER FIRST:子レコード実現値群の先頭に格納します。
ORDER LAST:子レコード実現値群の最後に格納します。
ORDER SORTED:子レコードで指定したキー項目の値に従って,昇順または降順に格納します。
KEYDATA
KEYDATA(出力文字数は最大512バイト)
-
ルートレコードの検索(FETCH),位置指示子の位置づけ(FIND),またはレコードの取得(GET)の場合
対象となるレコードのKEYDATA(シーケンシャルインデクスキー)を16進形式で表示します。
-
子レコードの検索(FETCH),位置指示子の位置づけ(FIND),またはレコードの取得(GET)の場合
対象となるレコードのKEYDATA(一連番号)を10進形式で表示します。
-
複数レコードの検索(FETCHDB ALL)の場合
ルートレコードのKEYDATA(シーケンシャルインデクスキー)を16進形式で表示します。
Index Name
レコードの検索に使用したインデクス名(出力文字数は最大30バイト)
インデクスを使用しない場合,この行は表示されません。
SearchCnd
サーチ条件の種類およびサーチ条件の絞り込み範囲(出力文字数は最大105バイト)
インデクスを使用した検索を行わない場合,この行は表示されません。
サーチ条件については,マニュアル「HiRDB コマンドリファレンス」の「サーチ条件」を参照してください。
アクセスパス情報では,?パラメタにSDBデータベース内で生成した番号が付与されます。
- 例:SearchCnd:AT [?(1)]
-
1つのユーザの条件値を複数の条件から参照している場合,番号は等しくなります。
KeyCnd
キー条件
キー条件がない場合,この行は表示されません。
キー条件については,マニュアル「HiRDB コマンドリファレンス」の「キー条件」を参照してください。
アクセスパス情報では,?パラメタにSDBデータベース内で生成した番号が付与されます。
- 例:MAM_CHILD1.DBNAME>?(3)
-
1つのユーザの条件値を複数の条件から参照している場合,番号は等しくなります。
RowCnd
システムが使用する内部情報
Parameter
次の情報が表示されます。
サーチ条件,キー条件,ロー条件がない場合,この行は表示されません。
-
?パラメタに付与された,SDBデータベース内で生成された番号(昇順)(出力文字数は最大2バイト)
-
上記の番号に対応するサーチ条件,キー条件,ロー条件で使用する条件値(16進数形式)(単位:バイト)
Search Status
複数レコードの検索時の検索状態
-
0x00:検索結果がNOT FOUNDとなった場合
-
FINISH:1つのファミリをすべて検索した場合
-
HALFWAY:1つのファミリのレコードの格納中に,データ格納エリアが満杯になった場合
Unused Len
複数レコードの検索時のデータ格納エリアの余り領域長(出力文字数は最大5バイト)(単位:バイト)
検索結果がNOT FOUNDのときは,データ格納エリアの領域長が表示されます。
Record List
-
複数レコードの検索時に検索したレコードのレコード型名(出力文字数は最大30バイト)
SDBディレクトリ情報に対応するレコード型名が設定されていない場合は,*****が表示されます。
-
複数レコードの検索時に検索したレコードごとの検索レコード数(出力文字数は最大3バイト)
-
(b) 位置指示子情報
位置指示子情報には,SDBデータベースを操作するAPIまたはDMLの実行時に使用した位置指示子について,APIまたはDMLの実行後の状態が出力されます。
SDBデータベースを操作するAPIまたはDMLと,出力される位置指示子情報の関係を次の表に示します。
SDBデータベースを操作するAPIまたはDML |
レコード位置指示子 |
親子集合位置指示子 |
|
---|---|---|---|
FETCH |
ルートレコード |
○ |
× |
子レコード |
× |
○ |
|
FIND |
○ |
× |
|
STORE |
ルートレコード |
○ |
× |
子レコード |
× |
○ |
|
MODIFY |
○ |
× |
|
ERASE |
○ |
× |
|
NULLIFY |
○※ |
○※ |
|
FETCHDB ALL |
× |
× |
|
GET |
○ |
× |
位置指示子の種別(レコード位置指示子,親子集合位置指示子)によって,出力する位置指示子情報は異なります。出力する位置指示子情報がない場合はヘッダも出力しません。
位置指示子の種別ごとの出力情報を次に示します。
-
レコード位置指示子の出力情報
-
位置指示子種別
-
レコード位置指示子に対応するレコードビュー名
-
レコード位置指示子が指すSDBKEY
-
レコード位置指示子のERASE RETAIN状態
-
インデクス情報
対象のインデクスについて次の情報を出力します。順序はインデクス型番号順となります。
・インデクス名
・インデクスキー長
・インデクスキー値
出力対象のインデクスを次の表に示します。
対象レコード
インデクス情報
4V AFMまたは4V FMBのSDBデータベースの場合
SD FMBのSDBデータベースの場合
ルートレコード
シーケンシャルインデクス
レコードに定義されたすべてのインデクス(シーケンシャルインデクスおよび二次インデクス)
子レコード
表示なし
-
-
親子集合位置指示子の出力情報
-
位置指示子種別
-
親子集合位置指示子の親に対応するレコードビュー名
-
親子集合位置指示子の子に対応するレコードビュー名
-
親子集合位置指示子の親が指すSDBKEY
-
親子集合位置指示子の子が指すSDBKEY(親子集合位置指示子が複合状態となった場合は,2個出力します)
-
親子集合位置指示子の複合状態
-
インデクス情報
対象のインデクスについて次の情報を出力します。順序はインデクス型番号順となります。
・インデクス名
・インデクスキー長
・インデクスキー値
出力対象のインデクスを次の表に示します。
対象レコード
インデクス情報
4V AFMまたは4V FMBのSDBデータベースの場合
SD FMBのSDBデータベースの場合
ルートレコード
−
−
子レコード
二次インデクス
二次インデクス
-
- [出力形式]
Result of SDB Cursor : # Cursor Type : aa...a Record Name : bb...b P Rec Name : cc...c C Rec Name : dd...d SDBKEY : ee...e SDBKEY(P) : ff...f SDBKEY(C1) : gg...g SDBKEY(C2) : hh...h Complex : ii...i Idx Name1 : kk...k Idx Key Len1 : ll...l Idx Key1 : mm...m Idx Name2 : kk...k Idx Key Len2 : ll...l Idx Key2 : mm...m : : Idx Name10 : kk...k Idx Key Len10: ll...l Idx Key10 : mm...m
SDBデータベースを操作するAPIまたはDMLの指定内容によっては表示されない項目があります。
- [出力例]
-
<レコード位置指示子の出力例>
Result of SDB Cursor : # Cursor Type : RECORD CURSOR Record Name : FMB1000 SDBKEY : 0x03000100140000001500000000000100 EraseRetain : {NO} Idx Name1 : FMB1IDX1 Idx Key Len1: 8 Idx Key1 : 0x3030303031313131
<親子集合位置指示子の出力例>
Result of SDB Cursor : # Cursor Type : SET CURSOR P Rec Name : FMB1000 C Rec Name : FMB101 SDBKEY(P) : 0x03000100140000001500000000000100 SDBKEY(C1) : 0x04000100140000001500000000000200 Complex : NO Idx Name1 : FMB1IDX3 Idx Key Len1: 8 Idx Key1 : 0x3333333330303030
- [説明]
-
出力内容
説明
位置指示子情報が表示されます。
Cursor Type
位置指示子種別(出力文字数は最大13バイト)
-
RECORD CURSOR:レコード位置指示子
-
SET CURSOR:親子集合位置指示子
Record Name
レコード位置指示子に対応するレコードビュー名(出力文字数は最大30バイト)
位置指示子種別がSET CURSOR(親子集合位置指示子)の場合,この行は表示されません。
レコードビュー名が設定されていない場合,“*****”が表示されます。
P Rec Name
親子集合位置指示子の親に対応するレコードビュー名(出力文字数は最大30バイト)
位置指示子種別がRECORD CURSOR(レコード位置指示子)の場合,この行は表示されません。
レコードビュー名が設定されていない場合,“*****”が表示されます。
C Rec Name
親子集合位置指示子の子に対応するレコードビュー名(出力文字数は最大30バイト)
位置指示子種別がRECORD CURSOR(レコード位置指示子)の場合,この行は表示されません。
レコードビュー名が設定されていない場合,“*****”が表示されます。
SDBKEY※
レコード位置指示子が指すSDBKEY(16進数形式)(出力文字数は最大34バイト)
位置指示子種別がSET CURSOR(親子集合位置指示子)の場合,この行は表示されません。
SDBKEY(P)※
親子集合位置指示子が指す親のSDBKEY(16進数形式)(出力文字数は最大34バイト)
位置指示子種別がRECORD CURSOR(レコード位置指示子)の場合,この行は表示されません。
SDBKEY(C1)※
親子集合位置指示子が指す子のSDBKEY(16進数形式)(出力文字数は最大34バイト)
位置指示子種別がRECORD CURSOR(レコード位置指示子)の場合,この行は表示されません。
SDBKEY(C2)※
親子集合位置指示子が指す子のSDBKEY(16進数形式)(出力文字数は最大34バイト)
位置指示子種別がRECORD CURSOR(レコード位置指示子)の場合,この行は表示されません。
また,位置指示子種別がSET CURSOR(親子集合位置指示子)であっても,親子集合位置指示子が複合状態でない場合,この行は表示されません。
Complex
親子集合位置指示子が複合状態であるかどうか(出力文字数は最大3バイト)
YES:複合状態である
NO:複合状態でない
位置指示子種別がRECORD CURSOR(レコード位置指示子)の場合,この行は表示されません。
EraseRetain
システムが使用する内部情報
Idx Name1
Idx Name2
:
インデクス名(出力文字数は最大30バイト)
位置指示子中にインデクスの情報を保持していない場合,この行は表示されません(領域だけ存在している場合,“*****”が表示されます)。
該当するレコードのインデクスの個数分表示されます。表示順序はインデクス型番号の順番となります。
Idx Key Len1
Idx Key Len2
:
インデクスキー長(出力文字数は最大3バイト)
位置指示子中にインデクスの情報を保持していない場合,この行は表示されません。
該当するレコードのインデクスの個数分表示されます。表示順序はインデクス型番号の順番となります。
Idx Key1
Idx Key2
:
インデクスキー値(16進数形式)(出力文字数は最大1,016バイト)
位置指示子中にインデクスの情報を保持していない場合,またはインデクスキー長が0の場合,この行は表示されません。
該当するレコードのインデクスの個数分表示されます。表示順序はインデクス型番号の順番となります。
-
(c) 増加するアクセスパス情報および位置指示子情報の容量
アクセスパス情報および位置指示子情報を表示すると,SQLトレースファイルの容量が次の式で示す容量分増えます。SQLトレースファイルの見積もり時には注意してください。ただし,SDBデータベースの定義,およびSDBデータベースを操作するAPIまたはDMLによって,容量は大きく変わります。次の式で見積もった値は,ある程度の目安にしてください。
増加量(単位:キロバイト)=75×SDBデータベースを操作するAPIまたはDMLの実行回数
(d) アクセスパス情報および位置指示子情報が省略された場合
通信量の制限によってアクセスパス情報および位置指示子情報が省略された場合,その個数が次のように出力されます。
(例)
The number of omitted blocks of DML Optimizer and SDB Cursor is 10.
(e) UAP単位の情報およびTRANSACTION単位の情報
- [出力例]
UAP単位の情報およびTRANSACTION単位の情報に出力される各項目については,マニュアル「HiRDB UAP開発ガイド」の「UAP統計レポートの見方」を参照してください。
ただし,上記の出力例で,枠で囲まれた部分の項目については,以下で説明します。
- [説明]
-
番号
ヘッダ名
説明
116
DMLC
APIまたはDML要求回数
SDBデータベースを操作するAPIまたはDMLの実行を要求した回数が出力されます。
117
DMLS
個別開始要求回数
API(個別開始)の実行を要求した回数,またはDMLの実行要求に対してシステムが個別開始の実行を要求した回数が出力されます。
118
DMLE
個別終了要求回数
API(個別終了)の実行を要求した回数が出力されます。
119
DMLFT
FETCH,FIND,またはFETCHDB ALL要求回数
APIまたはDML(FETCH,FIND,またはFETCHDB ALL)の実行を要求した回数が出力されます。
120
DMLER
ERASE要求回数
APIまたはDML(ERASE)の実行を要求した回数が出力されます。
121
DMLST
STORE要求回数
APIまたはDML(STORE)の実行を要求した回数が出力されます。
122
DMLMO
MODIFY要求回数
APIまたはDML(MODIFY)の実行を要求した回数が出力されます。
123
DMLDE
一括削除要求回数
API(一括削除)の実行を要求した回数が出力されます。
124
DMLIF
容量情報取得要求回数
API(容量情報取得)の実行を要求した回数が出力されます。
125
VRTFT
仮想ルートレコードFETCH実行回数※
API(FETCH,STORE,一括削除,または容量情報取得)の実行要求に対して,仮想ルートレコードにFETCHを実行した回数が出力されます。
126
VRTST
仮想ルートレコードSTORE実行回数※
API(STORE)の実行要求に対して,仮想ルートレコードにSTOREを実行した回数が出力されます。
127
VRTMO
仮想ルートレコードMODIFY実行回数※
API(STOREまたは一括削除)の実行要求に対して,仮想ルートレコードにMODIFYを実行した回数が出力されます。
128
ONYS
個別開始実行回数
API(個別開始)の実行要求に対して,実際に個別開始を実行した回数が出力されます。またはDMLの実行要求に対するシステムによる個別開始の実行要求に対して,実際に個別開始を実行した回数が出力されます。
129
ONYE
個別終了実行回数
API(個別終了)の実行要求に対して,実際に個別終了を実行した回数が出力されます。
130
SDBFT
FETCH,またはFETCHDB ALL実行回数※
APIまたはDML(FETCH,FIND,またはFETCHDB ALL)の実行要求に対して,実際にFETCH,またはFETCHDB ALLを実行した回数が出力されます。
131
SDBER
ERASE実行回数※
APIまたはDML(ERASE)の実行要求に対して,実際にERASEを実行した回数が出力されます。
132
SDBST
STORE実行回数※
APIまたはDML(STORE)の実行要求に対して,実際にSTOREを実行した回数が出力されます。
133
SDBMO
MODIFY実行回数※
APIまたはDML(MODIFY)の実行要求に対して,実際にMODIFYを実行した回数が出力されます。
134
SDFTR
FETCH,またはFETCHDB ALL取得レコード件数※
APIまたはDML(FETCH,FIND,またはFETCHDB ALL)の実行要求に対して,実際にFETCH,またはFETCHDB ALLを実行して取得したレコード件数が出力されます。
135
SDERR
ERASE削除レコード件数※
APIまたはDML(ERASE)の実行要求に対して,実際にERASEを実行して削除したレコード件数が出力されます。
削除対象のレコードの子レコードも削除された場合,そのレコードも数に含まれます。
136
SDSTR
STORE追加レコード件数※
APIまたはDML(STORE)の実行要求に対して,実際にSTOREを実行して追加したレコード件数が出力されます。
137
SDMOR
MODIFY更新レコード件数※
APIまたはDML(MODIFY)の実行要求に対して,実際にMODIFYを実行して更新したレコード件数が出力されます。
167
SDTFC
終端検知用の検索実行回数
UAPからのSDBデータベースを操作するAPIの実行要求時,HiRDB/SDが内部的に実行する終端検知用の(レコードの検索時に最終のレコードかどうかを判定するための),FETCHまたはFETCHDB ALLを実行した回数が出力されます。
168
DMLGT
GET要求回数
DML(GET)の実行を要求した回数が出力されます。
169
SDBGT
GET実行回数
DML(GET)の実行要求に対して,実際にGETを実行した回数が出力されます。
170
SDGTR
GET取得レコード件数
DML(GET)の実行要求に対して,実際にGETを実行して取得したレコード件数が出力されます。