Hitachi

ノンストップデータベース HiRDB Version 10 構造型データベース機能


16.5.5 UAP統計レポート機能

UAP実行時のUAP統計レポートをUAP統計レポートファイルに取得します。

次に示すSDBデータベースを操作するためのAPIまたはDMLを実行した場合,UAP統計レポートを参照すると,アクセスパス情報および位置指示子情報を特定できます。

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
[説明]

出力内容

説明

Result of DML Optimizer

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バイト)

注※1

FIND文(位置指示子の位置づけ)のSDBデータベースの操作種別は'FETCH'と表示されます。

注※2

アクセスパス情報には,Record NameまたはSet Nameのどちらかが表示されます。

(b) 位置指示子情報

位置指示子情報には,SDBデータベースを操作するAPIまたはDMLの実行時に使用した位置指示子について,APIまたはDMLの実行後の状態が出力されます。

SDBデータベースを操作するAPIまたはDMLと,出力される位置指示子情報の関係を次の表に示します。

SDBデータベースを操作するAPIまたはDML

レコード位置指示子

親子集合位置指示子

FETCH

ルートレコード

×

子レコード

×

FIND

×

STORE

ルートレコード

×

子レコード

×

MODIFY

×

ERASE

×

NULLIFY

FETCHDB ALL

×

×

GET

×

(凡例)

○:出力されます。

×:出力されません。

注※

アクセスパス情報にRecord Nameが表示されている場合は,レコード位置指示子が出力されます。アクセスパス情報にSet Nameが表示されている場合は,親子集合位置指示子が出力されます。

位置指示子の種別(レコード位置指示子,親子集合位置指示子)によって,出力する位置指示子情報は異なります。出力する位置指示子情報がない場合はヘッダも出力しません。

位置指示子の種別ごとの出力情報を次に示します。

  • レコード位置指示子の出力情報

    • 位置指示子種別

    • レコード位置指示子に対応するレコードビュー名

    • レコード位置指示子が指す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
[説明]

出力内容

説明

Result of SDB Cursor

位置指示子情報が表示されます。

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の場合,この行は表示されません。

該当するレコードのインデクスの個数分表示されます。表示順序はインデクス型番号の順番となります。

注※

SDBKEYは空値であっても,0x00000000000000000000000000000000のように値が出力されます。

(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を実行して取得したレコード件数が出力されます。

注※

APIまたはDMLの実行要求に対して,FETCH,FETCHDB ALL,STORE,MODIFY,またはERASEが複数回実行された場合,実行された回数分,実行回数およびレコード件数がカウントされます。複数回実行する途中でエラーが発生した場合は,エラーが発生するまでの実行回数,レコード件数となります。