16.5.5 UAP統計レポート機能
UAP実行時のUAP統計レポートをUAP統計レポートファイルに取得します。
次に示すSDBデータベースを操作するためのAPIまたはDMLを実行した場合,UAP統計レポートを参照すると,アクセスパス情報および位置指示子情報を特定できます。
-
レコードの検索(FETCH)
-
位置指示子の位置づけ(FIND)
-
複数レコードの検索(FETCHDB ALL)
-
レコードの格納(STORE)
-
レコードの更新(MODIFY)
-
レコードの削除(ERASE)
-
レコードの一括削除
-
構成情報取得
- 注意事項
-
次の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) アクセスパス情報
- [出力例]
- [説明]
-
出力内容
説明
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:レコードの検索,または位置指示子の位置づけ※
-
STORE:レコードの格納
-
ERASE:レコードの削除
-
MODIFY:レコードの更新
-
NULLIFY:位置指示子への空値設定
-
FETCHDB ALL:複数レコードの検索
Record Name
操作対象のレコード型名(出力文字数は最大30バイト)
複数レコードの検索(FETCHDB ALL)の場合はルートレコード型名が表示されます。
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 LAST:子レコード実現値群の最後に格納します。
ORDER SORTED:子レコードで指定したキー項目の値に従って,昇順または降順に格納します。
KEYDATA
KEYDATA(出力文字数は最大512バイト)
-
ルートレコードの検索(FETCH),または位置指示子の位置づけ(FIND)の場合:対象となるレコードのKEYDATA(シーケンシャルインデクスキー)を16進形式で表示します。
-
子レコードの検索(FETCH)の場合:対象となるレコードの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 |
× |
× |
- [出力例]
- [説明]
-
出力内容
説明
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
位置指示子に対応するインデクスのインデクス名(出力文字数は最大30バイト)
位置指示子中にインデクスの情報を保持していない場合,この行は表示されません(領域だけ存在している場合,“*****”が表示されます)。
Idx Key Len1
位置指示子に対応するインデクスのインデクスキー長(出力文字数は最大3バイト)
位置指示子中にインデクスの情報を保持していない場合,この行は表示されません。
Idx Key1
位置指示子に対応するインデクスのインデクスキー(16進数形式)(出力文字数は最大1,016バイト)
位置指示子中にインデクスの情報を保持していない場合,またはインデクスキー長が0の場合,この行は表示されません。
Idx Name2
位置指示子に対応するインデクスのインデクス名(出力文字数は最大30バイト)
位置指示子中にインデクスの情報を2本分保持していない場合,この行は表示されません(領域だけ存在している場合,“*****”が表示されます)。
Idx Key Len2
位置指示子に対応するインデクスのインデクスキー長(出力文字数は最大3バイト)
位置指示子中にインデクスの情報を2本分保持していない場合,この行は表示されません。
Idx Key2
位置指示子に対応するインデクスのインデクスキー(16進数形式)(出力文字数は最大1,016バイト)
位置指示子中にインデクスの情報を保持していない場合,またはインデクスキー長が0の場合,この行は表示されません。
-
(c) 増加するアクセスパス情報および位置指示子情報の容量
アクセスパス情報および位置指示子情報を表示すると,SQLトレースファイルの容量が次の式で示す容量分増えます。SQLトレースファイルの見積もり時には注意してください。ただし,SDBデータベースの定義,およびSDBデータベースを操作するAPIまたはDMLによって,容量は大きく変わります。次の式で見積もった値は,ある程度の目安にしてください。
増加量(単位:キロバイト)=60×SDBデータベースを操作するAPIまたはDMLの実行回数
(d) アクセスパス情報および位置指示子情報が省略された場合
通信量の制限によってアクセスパス情報および位置指示子情報が省略された場合,その個数が次のように出力されます。
(例)
The number of omitted blocks of DML Optimizer and SDB Cursor is 10.