スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
UAP統計レポートは,クライアント環境定義のPDCLTPATH,PDSQLTRACE,及びPDUAPREPLVLに値を設定すると取得できます。
UAP統計レポートファイルの出力先及びファイル名について説明します。
- 出力先
PDCLTPATHで指定したディレクトリ下に二つ出力されます。PDREPPATHを指定すると,PDCLTPATHで指定したディレクトリとは別のディレクトリに出力されます。
- ファイル名
pdHHMMSSmmm_xxxxxxxxxx_1.trc,又はpdHHMMSSmmm_xxxxxxxxxx_2.trc
- [説明]
- HH:HiRDBへのコネクト要求時間
- MM:分
- SS:秒
- mmm:ミリ秒
- xxxxxxxxxx:コネクト通番(10バイト以内)
PDSQLTRCOPENMODEにCNCTを指定した場合は,SQLトレースファイルをCONNECT,DISCONNECT単位でオープン,クローズできます。各クライアント環境定義については,「6.6 クライアント環境定義(環境変数の設定)」を参照してください。
取得する情報は,クライアント環境定義のPDUAPREPLVLで設定できます。PDUAPREPLVLの指定値と取得する情報の関係を次の表に示します。
表11-4 PDUAPREPLVLの指定値と取得する情報の関係
PDUAPREPLVLの指定値 |
取得する情報 |
SQL単位の情報 |
UAP単位の情報 |
アクセスパス情報 |
SQL実行時の中間結果情報 |
s※ |
○ |
− |
− |
− |
u |
− |
○ |
− |
− |
p |
− |
− |
○ |
− |
r |
− |
− |
− |
○ |
su※ |
○ |
○ |
− |
− |
sp※ |
○ |
− |
○ |
− |
sr※ |
○ |
− |
− |
○ |
up |
− |
○ |
○ |
− |
ur |
− |
○ |
− |
○ |
pr |
− |
− |
○ |
○ |
sur※ |
○ |
○ |
− |
○ |
spr※ |
○ |
− |
○ |
○ |
upr |
− |
○ |
○ |
○ |
a又はsupr※ |
○ |
○ |
○ |
○ |
- (凡例)
- ○:情報が取得されます。
- −:情報が取得されません。
- 注※
- sを指定した場合は,SQLトレース情報も取得されます。
- 注意事項
- アクセスパス情報,又はSQL実行時の中間結果情報を取得する場合,SQLオブジェクトがバッファ中にあってもSQLオブジェクトを再作成するため,サーバの負荷が増えることがあります。
- 次の場合は,UAP単位の情報は出力されません。
・OLTP下のX/Openに従ったAPIを使用するプログラムの場合
・DISCONNECTをしないでUAPが終了した場合
- アクセスパス情報,及びSQL実行時の中間結果情報は,1ギガバイトを超えると出力されません。
- 時間の表示(SQLの実行時間,排他待ち時間,CPU時間など)は,OSのシステムコールで取得できない小さい値があると,0が表示されます。
- HiRDB/パラレルサーバの場合,CONNECTしたディクショナリサーバでの権限チェック処理は,UAP単位の情報には含まれません。
- アクセスパス情報,又はSQL実行時の中間結果情報の出力を指定して,プロセス間メモリ通信機能を指定した場合(クライアント環境定義PDIPC=MEMORYを指定した場合),PDIPCの指定は無効となりPDIPC=DEFAULTとなります。
- SQLトレースファイルの容量
SQLトレースファイルの容量は,次の計算式から求められます。
SQLトレースファイルの容量
=3208+A+80×オペレーション数+SQL文長(最大4096)の総和
(単位:バイト)
- A:
- クライアント環境定義のPDHOST,PDFESHOST,PDSQLOPTLVL,PDADDITIONALOPTLVL,PDREPPATH,及びPDTRCPATHの指定文字列長の合計
また,SQL単位情報,UAP単位情報,アクセスパス情報,及びSQL実行時の中間結果情報を出力する場合は,次のサイズ(単位:バイト)も加算してください。
- SQL単位情報:
- 83※×SQL数
- UAP単位情報:
- 2740※×DISCONNECT数
- アクセスパス情報:
- 「(2)(b) アクセスパス情報」を参照してください。
- SQL実行時の中間結果情報:
- 「(2)(c) SQL実行時の中間結果情報」を参照してください。
- 注※
- 最大値です。表示するけた数で値は変わります。
出力されるUAP統計レポートの例を次に示します。また,その説明を(a)〜(d)に示します。
- [出力例]
CNCT CLPID CLTID NO OP SEC SQL SQL START-TIME END-TIME OP
NO CODE NO CODE WARN TION
---- ----- ----- -- ---- --- ---- ----- ------------ ------------ ----
1 9155 0 1 CNCT 0 0 WC040 16:03:55.720 16:03:58.080 0001
1 9155 0 2 AUI2 1 0 -0000 16:03:58.630 16:03:59.400 0000
*SQL* INSERT INTO T1(C1,C2,C3,C4,C5,C6) VALUES(?,?,?,?,?,?)
00:00:00.770 00:00:00.430000 340 1 0 0 0 0 0 ........(a)
[1] [2] [3] [4] [5] [6] [7] [8] [9]
1 9155 0 3 SET 2 0 -0000 16:04:00.820 16:04:01.540 0000
*SQL* SELECT * from T1, T2, T3 where ((T1.C1='a' and T1.C2='A')
or (T1.C1='a' and T1.C2='B')) and T1.C1=T2.C1 and T1.C2=T2.C2 and T2.C3>=1995
and T1.C1=T3.C1 and T1.C2=T3.C2 order by T1.C1
00:00:00.720 00:00:00.240000 480 1 0 0 0
Result of SQL Optimizer : .........................................(b)
Connect No : 1
--------------------------------------------------------------------------------
Section No : 2
UAP Source :XXXXXXXX.ec
Optimize Mode : COST_BASE_2
SQL Opt Level : 0x00000420(1056) = "PRIOR_NEST_JOIN"(32),"RAPID_GROUPING"(1024)
Add Opt Level : 0x00000003(3) = "COST_BASE_2"(1),"APPLY_HASH_JOIN"(2)
Work Table : 0
Table Cost : 12672.66944
----- QUERY EXPRESSION BODY ID : 1 -----
:
----- QUERY ID : 1 -----
:
JOIN
:
SCAN
:
--------------------------------------------------------------------------------
1 9155 0 4 OPEN 2 0 -0000 16:04:02.090 16:04:02.800 0000
Result of SQL Execution : .........................................(c)
--------------------------------------------------------------------------------
Connect No : 1
UAP Source : XXXXXXXX.ec
Section No : 2
----- QUERY EXPRESSION BODY ID : 1 -----
:
----- QUERY ID : 1 -----
:
JOIN
:
SCAN
:
--------------------------------------------------------------------------------
1 9155 0 9 DISC 0 0 -0000 16:05:55.110 16:05:56.660 0004
UAP INFORMATION: .................................................(d)
[1]UAPNAME()
[2]SVHOST(dcm3500) [3]SVPORT(4439) [4]SVNAME(fes1) [5]CNCTNO(1)
[6]SVPID(8945) [7]CLPID(9155) [8]CLTTID(0)
[9]WAITT(0) [10]CTIME(0)
[11]ROREQ(0) [12]ROHITS(0)
[13]SOREQ(10) [14]SOHITS(3) [15]SOCRT(0) [16]SOMAX(0)
[17]COMT(0) [18]ROLB(0) [19]FROW(0) [20]DROW(0) [21]IROW(3)
[22]UROW(0) [23]SET(1) [24]OPEN(2) [25]FETC(1) [26]CLOS(0)
[27]DESC(0) [28]SEL(1) [29]INS(3) [30]UPD(0) [31]DEL(0)
[32]LOCK(0) [33]CRTT(0) [34]DRPT(0) [35]ALTT(0) [36]CRTI(0)
[37]DRPI(0) [38]CMTT(0) [39]CMTC(0) [40]CRTS(0) [41]DRPS(0)
[42]GRTR(0) [43]GRTS(0) [44]GRTA(0) [45]GRTC(0) [46]GRTD(0)
[47]RVKR(0) [48]RVKS(0) [49]RVKA(0) [50]RVKC(0) [51]RVKD(0)
[52]CRTV(0) [53]DRPV(0) [54]PRGT(0) [55]CRTP(0) [56]DRPP(0)
[57]ALTP(0) [58]CALL(0) [59]DESI(0) [60]MISC(0)
[61]MAXIO(0) [62]MAXIOM(0) [63]MINIO(0) [64]MINIOM(0)
[65]IOTIM(0) [66]IOTIMM(0)
[67]DIDRC(0) [68]DIDUC(0) [69]DIDHC(0) [70]DIDRD(0) [71]DIDWT(0)
[72]LBRFC(0) [73]LBUPC(0) [74]LBRHC(0) [75]LBUHC(0) [76]LBRDC(0)
[77]LBWTC(0) [78]BFSHC(2320) [79]BRDWC(0) [80]BWTWC(50)
[81]BLKWC(2) [82]MWFN(0) [83]MWFEC(0) [84]MWFVL(0)
[85]WFRDC(0) [86]WFWTC(0) [87]WBFOC(0)
[88]MWHTS(0) [89]MBSL1(0) [90]MBSL2(0) [91]MBSL3(0)
[92]SCHSKD(0) [93]SCHCHG(0)
[94]CINSM(0) [95]CAFLS(0) [96]CAFWR(0) [97]CFMAX(0) [98]CFAVG(0)
[99]LDIRC(0) [100]LDIUC(0) [101]LDIHC(0) [102]LDIRD(0)
[103]LDIWT(0) [104]LBFSHC(0)
[105]ARREQ(0) [106]ARWC(0) [107]ARWT(0) [108]ARWTM(0)
[109]ARWTA(0) [110]ARWTMA(0) [111]ARSTA(0) [112]ARSTMA(0)
[113]HJMAX(0) [114]HJCMC(0) [115]HJHTC(0)
|
- SQL実行時間(単位:ミリ秒)
SQLの実行時間を,HH:MM:SS.mmmの形式で表示します。クライアント環境定義PDSQLEXECTIMEにYESを指定した場合,単位はマイクロ秒となります。
- サーバ側でのSQL実行時間(単位:マイクロ秒)
サーバ側でのSQLの実行時間を,HH:MM:SS.mmmmmmの形式で表示します。
- 1-2の差分(単位:ミリ秒)
通信処理の時間の目安となります。クライアント環境定義PDSQLEXECTIMEにYESを指定した場合,単位はマイクロ秒となります。
- 処理行数
この接続中に発行したSQL文で処理した,行数を表示します。
- 作業表作成回数
この接続中に発行したSQL文の内部処理で作成した,作業表の作成回数を表示します。
- 作業表削除回数
この接続中に発行したSQL文の内部処理で削除した,作業表の削除回数を表示します。
- SQLオブジェクトサイズ(単位:バイト)
この接続中に発行したSQL文で作成した,SQLオブジェクトの大きさを表示します。
- ハッシュジョイン,副問合せのハッシュ実行でのハッシュ表探索時の総比較回数
この接続中に発行したSQL文での,ハッシュ表探索時の同一ハッシュ値を持つデータに対する比較回数の合計です。
- ハッシュジョイン,副問合せのハッシュ実行での総ハッシュ表探索回数
この接続中に発行したSQL文で,ハッシュ表を探索した回数です。
アクセスパス情報を表示します。Connect Noには,コネクト通番を表示します。コネクト通番を基に上方向にサーチすることで,SQLトレース情報中に表示されているSQL文を特定できます。動的SQLの場合はコネクト通番を基に下方向に,静的SQLの場合はコネクト通番を基に上方向にサーチすることで,SQLトレース情報中に表示されているSQLの実行要求開始時間,及び終了時間が分かります。また,SQL単位の情報を取得すると,SQL実行時間が表示されます。SQL実行時間が長いSQLがある場合は,チューニングを実施してください。
UAP統計レポートでアクセスパス情報を表示する場合,HiRDBのバージョン,バックエンドサーバ数,UAP名称,認可識別子,SQL最適化処理をした時間,及びSQL文は表示しません。ただし,ルーチン中に操作系SQLを指定した場合,SQL文に操作系SQLを表示します。
また,HiRDB/シングルサーバの場合に,アクセスパスがSELECT-APSL(複数のアクセスパスから,境界値によって実行時にアクセスパスを選択する)となるときは,最初に境界値の情報を表示し,後ろにSection Noで区切られた候補を複数表示します。
アクセスパス情報については,マニュアル「HiRDB Version 8 コマンドリファレンス」のアクセスパス表示ユティリティを参照してください。
- 外部Javaストアドルーチンの実行では,アクセスパス情報は表示されません。
- SQLルーチンの実行では,ルーチン内で使用している表に対して,インデクスの追加又は削除でSQLオブジェクトのインデクス情報が無効になった場合,アクセスパス情報を表示します。
- アクセスパス情報を表示すると,SQLトレースファイルの容量が増えます。増加するアクセスパス情報の容量は,次の計算式から求められます。ただし,表定義,インデクス定義,及び及びSQLでアクセスパス情報の容量は変わるため,計算式の結果は一応の目安としてください。
SQL実行時の中間結果情報を表示します。
SQL実行時の中間結果情報を表示した場合,次の情報を確認できます(ここで表示される行数は,各中間段階で実際にHiRDBが処理した行数となります)。
- 表から取り出した行数
- インデクスで絞り込まれた行数
- 結合ごとの結果の行数
- 問合せに指定した重複排除,GROUP BY,ORDER BY,及びLIMITの入出力の行数,並びに問合せの結果の行数
- 集合演算ごとの結果の行数
このSQL実行時の中間結果情報とアクセスパス情報を使用して,SQLのチューニングを実施してください。なお,アクセスパス情報を使用したSQLのチューニングについては,マニュアル「HiRDB Version 8 コマンドリファレンス」のアクセスパス表示ユティリティを参照してください。
- [出力形式]
-------------------------------------------------------
Connect No : aa...a
UAP Source : bb...b
Section No : cc...c
----- QUERY EXPRESSION BODY ID : ... ----- .............1
:
----- QUERY ID : ... ----- .............................2
:
JOIN ...................................................3
:
SCAN ...................................................4
:
|
- [説明]
- 集合演算情報
集合演算情報については,「集合演算処理情報」を参照してください。
- 問合せ処理情報
問合せ処理情報については,「問合せ処理情報」を参照してください。
- 結合処理情報
結合処理情報については,「結合処理情報」を参照してください。
- 実表検索処理情報
実表検索処理情報については,「実表検索処理情報」を参照してください。
- aa...a:
- コネクト通番が表示されます。
- bb...b:
- UAPソースファイル名が表示されます。
- cc...c:
- セクション番号(SQL の対応を確認するための番号)が表示されます。
- Connect No以降の情報は,SQLの個数分繰り返して表示されます。コネクト通番とセクション番号でサーチすることで,SQLトレース情報中に表示されているSQL文やアクセスパス情報と対応付けることができます。
- 集合演算処理情報
----- QUERY EXPRESSION BODY ID : aa...a -----
Query : bb...b ROWS
Limit : cc...c ROWS <-- dd...d ROWS
Order by : ee...e ROWS
SetOpe Process : ff...f = gg...g ROWS <-- hh...h ii...i hh...h
:
|
- [説明]
- aa...a:
- 問合せ式本体IDが表示されます。
- 集合演算を含む問合せ式本体単位に番号を付けます。SQLが複数の問合せ式本体で構成される場合,この行で区切って情報が表示されます。
- 「(b)アクセスパス情報」を表示している場合,アクセスパス情報で表示されている問合せ式本体IDに対応しています。
- bb...b:
- 問合せ式の結果の行数が表示されます。
- cc...c ROWS <-- dd...d ROWS:
- 最終的に,リミット行数分の検索結果を取得する処理(LIMIT処理)の行数が表示されます。
- LIMIT句を指定していない場合,この行は表示されません。
- cc...c:
- LIMIT処理の出力行数が表示されます。
- dd...d:
- LIMIT処理の入力行数が表示されます。
- ee...e:
- ソート処理(ORDER BY処理)の行数が表示されます。
- 次のどれかに該当する場合,この行は表示されません。
- ORDER BY句を指定していない。
- ORDER BY句で指定したソート処理が省略される。
- LIMIT句を指定している。
- ff...f = gg...g ROWS <-- hh...h ii...i hh...h:
- 集合演算の結果の行数が表示されます。
- 集合演算を複数指定した場合,複数行に分けて表示されます。
- UNION ALLの分割スキャンをする機能(作業表を作成しないで各問合せの検索結果を連続して返す)を適用した場合,この行は表示されません。
- ff...f:
- 集合演算結果の集合演算番号が,"LID(集合演算番号)"で表示されます。
- アクセスパス情報を表示している場合,アクセスパス情報で表示されている集合演算番号に対応しています。
- gg...g:
- 集合演算結果の行数が表示されます。
- hh...h:
- 演算する問合せ式本体が問合せ指定の場合,"QID(問合せID)"が表示されます。演算する問合せ式本体が複数の問合せ指定の結合結果の場合,"LID(集合演算番号)"が表示されます。
- ii...i:
- 集合演算の種別("UNION","UNION ALL","EXCEPT",又は"EXCEPT ALL")が表示されます。前後のhh...hは,演算する問合せ式本体となります。
- 問合せ処理情報
----- QUERY ID : aa...a -----
Query : bb...b ROWS
Limit : cc...c ROWS <-- dd...d ROWS
Order by : ee...e ROWS
Distinct : ff...f ROWS <-- gg...g ROWS
Having : hh...h ROWS
Group by : ii...i ROWS <-- jj...j ROWS
|
- [説明]
- aa...a:
- 問合せIDが表示されます。
- 問合せ指定に番号を付けます。SQLが複数の問合せ指定で構成される場合,この行で区切って情報が表示されます。
- アクセスパス情報を表示している場合,アクセスパス情報で表示されている問合せIDに対応しています。
- bb...b:
- 問合せの結果の行数が表示されます。
- cc...c ROWS <-- dd...d ROWS:
- 最終的に,リミット行数分の検索結果を取得する処理(LIMIT処理)の行数が表示されます。
- LIMIT句を指定していない場合,この行は表示されません。
- cc...c:
- LIMIT処理の出力行数が表示されます。
- dd...d:
- LIMIT処理の入力行数が表示されます。
- ee...e:
- ソート処理(ORDER BY処理)の行数が表示されます。ORDER BY句を指定していない場合でも,暗黙的にORDER BY処理をすることがあります。
- 次のどれかに該当する場合,この行は表示されません。
- ORDER BY句を指定していない。
- ORDER BY句で指定したソート処理が省略される。
- 暗黙的にORDER BY処理をしない。
- LIMIT句を指定している。
- ff...f ROWS <-- gg...g ROWS:
- 重複排除処理の処理行数が表示されます。重複排除を指定していない場合でも,暗黙的に重複排除処理をすることがあります。
- 次のどれかに該当する場合,この行は表示されません。
- 重複排除を指定していない。
- 暗黙的に重複排除処理をしない。
- LIMIT句を指定している。
- ff...f:
- 重複排除処理の出力行数が表示されます。
- gg...g:
- 重複排除処理の入力行数が表示されます。
- hh...h:
- HAVING句を評価した後の行数が表示されます。
- HAVING句を指定していない場合,この行は表示されません。
- ii...i ROWS <-- jj...j ROWS:
- グループ分け処理(暗黙的グループ分け処理を含む)の処理行数が表示されます。
- グループ分け処理をしない場合,この行は表示されません。
- ii...i:
- グループ分け処理の出力行数が表示されます。
- jj...j:
- グループ分け処理の入力行数が表示されます。
- 結合処理情報
JOIN
# Join ID : aa...a
Row Count : bb...b ROWS
Left : cc...c ROWS
Right : dd...d ROWS
Join Type : ee...e(ff...f)
|
- [説明]
- aa...a:
- 結合処理IDが表示されます。
- 結合処理単位で番号を付け,結合処理が複数ある場合にはこの行で区切られます。
- アクセスパス情報を表示している場合,アクセスパス情報で表示されている結合処理IDに対応しています。
- bb...b:
- 結合処理の結果の行数が表示されます。
- cc...c:
- 左側の結合相手から取り出した行数が表示されます。
- dd...d:
- 右側の結合相手から取り出した行数が表示されます。
- ee...e:
- HiRDB/シングルサーバの場合,又はHiRDB/パラレルサーバでSQL実行時に結合方式を動的に決定しない場合
結合処理の種別("MERGE JOIN","NESTED LOOPS JOIN","CROSS JOIN",又は"HASH JOIN")が表示されます。
- HiRDB/パラレルサーバでSQL実行時に結合方式を動的に決定する場合
結合処理の種別"SELECT-APSL"が表示されます。
- ff...f:
- 結合処理の実行種別("INNER","LEFT OUTER","EXIST","NOT EXIST","ALL",又は"VALUE")が表示されます。
- 実表検索処理情報
- インデクスを使用しない,又は一つだけ使用して検索する場合
SCAN
# Table Name : aa...a(aa...a) 0xbbbbbbbb(bb...b)
Row Count : cc...c ROWS
Index Name : dd...d 0xeeeeeeee(ee...e)
Search : ff...f gg...g
Key : hh...h gg...g
|
- [説明]
- aa...a(aa...a):
- 検索対象となる表名(相関名)が表示されます。
- 相関名を使用していない場合,(相関名)は表示されません。検索処理が複数ある場合,この行で区切って情報が表示されます。
- 0xbbbbbbbb(bb...b):
- 検索対象となる表IDが16進数(10進数)で表示されます。
- cc...c:
- 実表から取り出した行数が表示されます。
- dd...d:
- 検索で使用するインデクス名が表示されます。
- 次の場合,この行は表示されません。
- インデクスを使用しないで検索する。
- HiRDB/パラレルサーバでSQL実行時に検索方法を動的に決定する。
- 0xeeeeeeee(ee...e):
- 検索で使用するインデクスIDが16進数(10進数)で表示されます。
- ff...f:
- サーチ条件で絞り込まれた結果の行数が表示されます。
- サーチ条件がない場合でも,インデクスを使用した検索のときは,インデクスを構成している行数が表示されます。
- なお,プラグインインデクスのサロゲート機能を使用して集合関数の結果を求めている合,この行は表示されません。
- gg...g:
- 繰返し列を含むインデクスの場合,"ELEMENTS"が表示されます。それ以外の場合,"ROWS"が表示されます。
- hh...h:
- キー条件で絞り込まれた結果の行数が表示されます。
- キー条件がない場合,この行は表示されません。
-
- インデクスを二つ以上使用して検索する場合
SCAN
# Table Name : aa...a(aa...a) 0xbbbbbbbb(bb...b)
Row Count : cc...c ROWS
Index Name : dd...d = ee...e 0xffffffff(ff...f)
Search : gg...g hh...h
Key : ii...i hh...h
Row Count : jj...j ROWS
dd...d = ee...e 0xffffffff(ff...f)
Search : gg...g hh...h
Key : ii...i hh...h
Row Count : jj...j ROWS
dd...d = kk...k ROWS <-- ll...l mm...m ll...l
|
- [説明]
- aa...a(aa...a):
- 検索対象となる表名(相関名)が表示されます。
- 相関名を使用していない場合,(相関名)は表示されません。検索処理が複数ある場合,この行で区切って情報が表示されます。
- 0xbbbbbbbb(bb...b):
- 検索対象となる表IDが16進数(10進数)で表示されます。
- cc...c:
- 実表から取り出した行数が表示されます。
- dd...d:
- AND PLURAL INDEXES SCAN※のときに作成する作業表番号が,"LID(作業表番号)"で表示されます。
- アクセスパス情報を表示している場合,アクセスパス情報で表示されている作業表番号に対応しています。
- ee...e:
- AND PLURAL INDEXES SCAN※,又はOR PLURAL INDEXES SCAN※の場合,作業表を作成するために使用するインデクス名が複数行表示されます。ただし,インデクスを使用しないで作成する作業表については,インデクス名に"(NO USE)"が表示されます。
- 0xffffffff(ff...f):
- 検索で使用するインデクスIDが16進数(10進数)で表示されます。
- gg...g:
- サーチ条件で絞り込まれた結果の行数が表示されます。
- サーチ条件がない場合でも,インデクスを使用した検索のときは,インデクスを構成している行数が表示されます。
- hh...h:
- 繰返し列を含むインデクスの場合,"ELEMENTS"が表示されます。それ以外の場合,"ROWS"が表示されます。
- ii...i:
- キー条件で絞り込まれた結果の行数が表示されます。
- キー条件がない場合,この行は表示されません。
- jj...j:
- 実表から取り出した行数が表示されます。
- dd...d = kk...k ROWS <-- ll...l mm...m ll...l:
- AND PLURAL INDEXES SCAN※時の作業表の作成順序が表示されます。インデクスを三つ以上使用して検索する場合,複数行で表示されます。
- kk...k:
- 演算結果の行数が表示されます。
- ll...l:
- 演算をするための入力となる作業表が"LID(作業表番号)"で表示されます。
- mm...m:
- 作業表間の演算の種別("AND","OR",又は"ANDNOT")が表示されます。
- 注※
- AND PLURAL INDEXES SCAN,及びOR PLURAL INDEXES SCANについては,マニュアル「HiRDB Version 8 コマンドリファレンス」のアクセスパス表示ユティリティを参照してください。
-
- ビュー表の結果を検索するために作業表を作成する場合
SCAN
# Table Name : aa...a(aa...a) 0xbbbbbbbb(bb...b)
Row Count : cc...c ROWS
|
- [説明]
- aa...a(aa...a):
- ビュー名(相関名)が表示されます。
- 相関名を使用していない場合,(相関名)は表示されません。
- 0xbbbbbbbb(bb...b):
- ビューIDが16進数(10進数)で表示されます。
- cc...c:
- 表から取り出した行数が表示されます。
-
- WITH句のために作業表を作成する場合
SCAN
# Table Name : aa...a(aa...a)
Row Count : bb...b ROWS
|
- [説明]
- aa...a(aa...a):
- WITH句問合せ名(相関名)が表示されます。
- 相関名を使用していない場合,(相関名)は表示されません。
- bb...b:
- 表から取り出した行数が表示されます。
-
- FROM句に指定した導出表のために作業表を作成する場合
SCAN
# Table Name : aa...a(aa...a)
Row Count : bb...b ROWS
|
- [説明]
- aa...a(aa...a):
- "(NO NAME)",又は"(NO NAME)(相関名)"が表示されます。
- bb...b:
- 表から取り出した行数が表示されます。
-
- HiRDBが内部的に作成する作業表を検索する場合
SCAN
# Table Name : aa...a
Row Count : bb...b ROWS
|
- [説明]
- aa...a:
- HiRDBが内部的に作成する作業表名が表示されます。
- HiRDBが内部的に作成する作業表名は,"(DUMMY 作業表番号)"となります。
- 作業表番号は3けたの整数です。
- bb...b:
- HiRDBが内部的に作成する,作業表から取り出した行数が表示されます。
-
- 外部サーバに対する問合せ結果を検索する場合
SCAN
# Table Name : aa...a
Row Count : bb...b ROWS
|
- [説明]
- aa...a:
- 外部サーバから取り出した結果を自HiRDBが受け取るために,内部的に作成する表識別子の名称"(FOREIGNSQL 表番号)"が表示されます。
- bb...b:
- 外部サーバから取り出した行数が表示されます。
- 注意事項:
- 次のSQLを実行した場合,SQL実行時の中間結果情報が表示されます。
- 定義系SQL※1
- ASSIGN LIST文※5
- CLOSE文
- DELETE文※6
- EXECUTE文※1
- EXECUTE IMMEDIATE文※2
- INSERT文※3※6
- PREPARE文※4
- PURGE TABLE文※1
- 1行SELECT文
- UPDATE文※6
- COMMIT文※1
- DISCONNECT文※1
- ROLLBACK文※1
- 暗黙的ロールバックありのエラーが発生した場合※1
- 注※1
- 閉じていないカーソルがある場合,SQL実行時の中間結果情報が表示されます。
- 注※2
- 次のSQLの場合,SQL実行時の中間結果情報が表示されます。
- ・ASSIGN LIST文
- ・DELETE文
- ・INSERT文
- ・UPDATE文
- 注※3
- VALUES句にスカラ副問合せ,又は問合せ指定を指定した場合,SQL実行時の中間結果情報が表示されます。
- 注※4
- クライアント環境定義PDPRPCRCLSにYESを指定していて,かつ開いているカーソルで使用しているSQL識別子を再度PREPRARE文で使用する場合,開いていたカーソルのSQL実行時の中間結果情報が表示されます。
- 注※5
- FOR ALTER LISTを指定した場合,SQL実行時の中間結果は表示されません。
- 注※6
- 対象となる表に外部表を指定した場合,SQL実行時の中間結果は表示されません。
- ストアドプロシジャに記述したSQLについては,CALL文を実行してもSQL実行時の中間結果情報は表示されません。
- トリガに記述したトリガSQLについては,トリガが実行されてもSQL実行時の中間結果情報は表示されません。
- HiRDB/パラレルサーバの場合,各サーバの合計行数が表示されます。
- 表示される行数は正確な値でないことがあります。
- SQL実行時の中間結果情報を表示すると,SQLトレースファイルの容量が次の式で示す容量分増えます。SQLトレースファイルの見積もり時には注意してください。ただし,表定義,インデクス定義,及びSQLによって,中間結果情報の容量は大きく変わります。次の式で見積もった値は,ある程度の目安にしてください。
SQL実行時の中間結果情報容量
n
=0.8+0.1×集合演算数+0.9×Σ (Si) (単位:キロバイト)
i=1
|
n:SQL文中の問合せ指定数
Si:i番目の問合せ指定中の表数
(d) UAP単位の情報
- UAP名
統計情報を編集したUAPの名称です。
- ホスト名
接続したサーバのホスト名です。
- ポート番号
接続したサーバのポート番号です。
- 接続サーバ名
接続したフロントエンドサーバ又はシングルサーバのサーバ名です。
- コネクト通番
サーバがCONNECTを受け付けるごとに,順次カウントする通番です。
- サーバプロセス番号
接続したサーバのプロセス番号です。
- クライアントプロセス番号
UAPのプロセス番号です。Type4 JDBCドライバから接続している場合は,0を表示します。
- クライアントスレッド番号
マルチスレッドで動作しているUAPのスレッド番号です。Type4 JDBCドライバから接続している場合は,0を表示します。
- 排他待ち時間(単位:ミリ秒)※1
サーバ内で発生した排他取得要求に対して,ほかのユーザが排他を取得しているため排他取得待ちとなった時間です。
- CPU時間(単位:ミリ秒)※1
UAP実行時のトランザクション中に使用した,サーバ側のCPU稼働時間です。
- ストアドプロシジャのSQLオブジェクト取得要求回数
シングルサーバ又はフロントエンドサーバで,SQLオブジェクト用バッファに対して,ストアドプロシジャのSQLオブジェクトの取得要求をした回数です。
- ストアドプロシジャオブジェクトバッファヒット回数
シングルサーバ又はフロントエンドサーバで,SQLオブジェクト用バッファから情報が見つかった回数です。
- SQLオブジェクト取得要求回数
接続中に発行したSQL文に対して,SQLオブジェクトの取得要求をした回数です。
- SQLオブジェクトバッファヒット回数
接続中に発行したSQL文に対して,取得要求をしたSQLオブジェクト用バッファで情報が見つかった回数です。
- SQLオブジェクト作成回数
接続中に発行したSQL文に対して,SQLオブジェクトを作成した回数です。
- 作成したSQLオブジェクトサイズの最大値(単位:バイト)
接続中に発行したSQL文で作成した,SQLオブジェクトサイズの最大値です。
- 接続中のCOMMIT文の実行回数
- 接続中のROLLBACK文の実行回数
- 接続中のFETCH文,SELECT文の実行で,UAPに返した検索行数
- 接続中のDELETE文の実行で,削除した行数
- 接続中のINSERT文の実行で,挿入した行数
- 接続中のUPDATE文の実行で,更新した行数
- 接続中の前処理実行回数
- 接続中のOPEN文実行回数
- 接続中のFETC文実行回数
- 接続中のCLOSE文実行回数
- 接続中のDESCRIBE文実行回数
- 接続中のSELECT文実行回数
- 接続中のINSERT文実行回数
- 接続中のUPDATE文実行回数
- 接続中のDELETE文実行回数
- 接続中のLOCK文実行回数
- 接続中のCREATE TABLE実行回数
- 接続中のDROP TABLE実行回数
- 接続中のALTER TABLE実行回数
- 接続中のCREATE INDEX実行回数
- 接続中のDROP INDEX実行回数
- 接続中のCOMMENT(TABLE)実行回数
- 接続中のCOMMENT(COLUMN)実行回数
- 接続中のCREATE SCHEMA実行回数
- 接続中のDROP SCHEMA実行回数
- 接続中のGRANT RDAREA実行回数
- 接続中のGRANT SCHEMA実行回数
- 接続中のGRANTアクセス権限実行回数
- 接続中のGRANT CONNECT実行回数
- 接続中のGRANT DBA実行回数
- 接続中のREVOKE RDAREA実行回数
- 接続中のREVOKE SCHEMA実行回数
- 接続中のREVOKEアクセス権限実行回数
- 接続中のREVOKE CONNECT実行回数
- 接続中のREVOKE DBA実行回数
- 接続中のCREATE VIEW実行回数
- 接続中のDROP VIEW実行回数
- 接続中のPURGE TABLE文実行回数
- 接続中のCREATE PROCEDURE実行回数
- 接続中のDROP PROCEDURE実行回数
- 接続中のALTER PROCEDURE実行回数
- 接続中のCALL文実行回数
- 接続中のDESCRIBE文(INPUT)実行回数
- 接続中のそのほかのSQLの実行回数
- 最大入出力時間(単位:秒)
- 最大入出力時間(単位:マイクロ秒)(秒値は含まれません)
- 最小入出力時間(単位:秒)
- 最小入出力時間(単位:マイクロ秒)(秒値は含まれません)
入出力時間が妥当かどうか検証してください。必要以上に時間が掛かっている場合はハード障害の可能性があるのでハードログを取得して検証してください。
非同期READ機能を使用した場合は,非同期READプロセスでの一括先読みの入出力時間は含まれません。
- データベースに対する入出力時間の累計(単位:秒)
- データベースに対する入出力時間の累計(単位:マイクロ秒)(秒値は含まれません)
原因が入出力なのか,又はCPUなのかの判断に使用してください。
非同期READ機能を使用した場合は,非同期READプロセスでの一括先読みの入出力時間は含まれません。
- データ,インデクス,及びディレクトリページを参照した回数
該当するUAPからデータ,インデクス,及びディレクトリページを参照した回数が分かります。
- データ,インデクス,及びディレクトリページを更新した回数
該当するUAPからデータ,インデクス,及びディレクトリページを更新した回数が分かります。
- データ,インデクス,及びディレクトリページのバッファヒット回数
データ,インデクス,及びディレクトリページのバッファヒット回数が分かります。ヒット率(項番69÷項番67)×100が低い場合は,グローバルバッファの統計を取得して,ヒット率の悪いグローバルバッファのチューニングをしてください。チューニング対象となるのは,LOB用以外のグローバルバッファです。
- データ,インデクス,及びディレクトリページの実READ回数
該当するUAPからデータ,インデクス,及びディレクトリページを実READした回数が分かります。
プリフェッチ機能を使用している場合は,プリフェッチで先読みしたREAD回数も含まれます。また,非同期READ機能を使用した場合は,非同期READプロセスで先読みしたREAD回数も含まれます。
バッファヒット率が悪いと,READ回数も多くなります。
- データ,インデクス,及びディレクトリページの実WRITE回数
該当するUAPからデータ,インデクス,及びディレクトリページを実WRITEした回数が分かります。コミット出力機能を使用している場合は,コミット時にデータベースへ反映するために出力した回数もカウントされます。
- LOBページを参照した回数
該当するUAPからLOBページを参照した回数が分かります。LOBデータ,及びプラグインの検索はここにカウントされます。
- LOBページを更新した回数
該当するUAPからLOBページを更新した回数が分かります。LOBデータ,及びプラグインの更新はここにカウントされます。
- LOBページの参照バッファヒット回数
LOB用のグローバルバッファを使用している場合,参照バッファヒット回数が分かります。ヒット率(項番74÷項番72)×100が低い場合は,グローバルバッファの統計を取得してグローバルバッファのチューニングをしてください。チューニング対象となるのは,LOB用のグローバルバッファです。LOB用のグローバルバッファを使用していない場合は,ヒット率は0になります。
- LOBページの更新バッファヒット回数
LOB用のグローバルバッファを使用している場合,更新バッファヒット回数が分かります。LOBデータの更新,又はプラグインインデクスの更新でヒット率(項番75÷項番73)×100が低い場合は,グローバルバッファの統計を取得してグローバルバッファのチューニングをしてください。チューニング対象となるのは,LOB用のグローバルバッファです。LOB用のグローバルバッファを使用していない場合は,ヒット率は0になります。また,LOBデータの新規追加では更新バッファヒットはしません。
- LOBページの実READ回数
該当するUAPからLOBページを実READした回数が分かります。LOB用のグローバルバッファを使用している場合は,READバッファヒット率が低いとREAD回数も多くなります。
- LOBページの実WRITE回数
該当するUAPからLOBページを実WRITEした回数が分かります。プラグインインデクスを更新する場合は,LOB用のグローバルバッファを使用することで実WRITE回数を削減できます。
- グローバルバッファフラッシュ回数
新たなページを入力する空きバッファを作成するために,バッファを無効にした回数です。バッファ満杯によってページをメモリから追い出した回数が分かります。※2
- グローバルバッファのREAD待ち発生回数
バッファ上のページが,ほかのユーザによってHiRDBファイルからの入力中であったため,待ち状態になった回数です。他UAPがREAD中のページに対してページ参照要求があり,READ完了まで待ちになった回数が分かります。※2
- グローバルバッファのWRITE待ち発生回数
バッファ上のページが,ほかのユーザによってHiRDBファイルへの出力中であったため,待ち状態になった回数です。WRITE中のページに対してページ更新要求があり,WRITE完了まで待ちになった回数が分かります。※2
- グローバルバッファの排他待ち発生回数
バッファ上のページが,ほかのユーザによって使用中であったため,待ち状態になった回数です。他UAPが更新中のページに対してページの参照又は更新要求があり,他UAPの更新完了まで待ちになった回数が分かります。※2
- 最大作業表用ファイル数
該当するUAPでの作業表用ファイルの最大使用数です。※3
作業表用ファイル用のHiRDBファイルシステム領域を作成する,pdfmkfsコマンドの-lオプション(最大ファイル数)の指定値の妥当性をチェックできます。-lオプション指定値は次の式を満たしている必要があります。※4
-lオプション指定値
≧同時に実行するUAPのすべての作業表用ファイル数の合計値+20
- 最大作業表用ファイル増分回数
該当するUAPでの作業表用ファイルの最大増分回数です。※3
作業表用ファイル用のHiRDBファイルシステム領域を作成する,pdfmkfsコマンドの-eオプション(最大増分回数)の指定値の妥当性をチェックできます。-eオプション指定値は次の式を満たしている必要があります。※4
-eオプション指定値
≧同時に実行するUAPのすべての作業表用ファイル増分回数の合計値
- 作業表用ファイルの最大容量(単位:メガバイト)
該当するUAPでの作業表用ファイルの最大容量です。作業表用ファイル用のHiRDBファイルシステム領域を作成する,pdfmkfsコマンドの-nオプション(最大増分回数)の指定値の妥当性をチェックできます。-nオプション指定値は次の式を満たしている必要があります。※4
-nオプション指定値
≧同時に実行するUAPのすべての作業表用ファイル最大容量の合計値
+HiRDBファイルシステム領域の管理領域サイズ
- 作業表用ファイルのREAD回数
作業表のデータを,ファイルからバッファへ入力した回数です。※1
- 作業表用ファイルのWRITE回数
作業表のデータを,バッファからファイルに出力した回数です。※1
- 作業表用バッファの強制出力回数
作業表用バッファが不足したため,使用中バッファを強制的にファイル出力した回数です。※1
この値が0でない場合,システム定義のpd_work_buff_sizeオペランド(作業表用バッファ長)を大きくしてください。
- ハッシュ表を一括して展開するための推定値(単位:キロバイト)
ハッシュジョイン,副問合せのハッシュ実行で,処理したハッシュデータを一括して展開するために必要なハッシュ表サイズの推定値です。※3
ハッシュ表サイズがこの値以上であれば,すべてバケット分割をしない一括ハッシュジョインになります※5。また,この値がハッシュ表サイズの指定範囲を超える場合は,一括ハッシュジョインにはできません。この値が0の場合は,ハッシュジョイン,副問合せのハッシュ実行が行われていません。
- 1レベル最大バケットサイズ(単位:キロバイト)
ハッシュジョイン,副問合せのハッシュ実行での,1レベルバケット分割後の最大バケットサイズです。※3
ハッシュ表サイズがこの値以上であれば,バケット分割が1レベルで完了しています。また,バケット分割が2レベル以上の場合は,ハッシュ表サイズにこの値を設定することで,バケット分割が1レベルで完了するようになります※6。すべてバケット分割をしない一括ハッシュジョインになった場合,この値は0となります。
- 2レベル最大バケットサイズ(単位:キロバイト)
ハッシュジョイン,副問合せのハッシュ実行での,2レベルバケット分割後の最大バケットサイズです。※3
ハッシュ表サイズがこの値以上であれば,バケット分割が2レベルで完了しています。また,バケット分割が3レベル以上の場合は,ハッシュ表サイズにこの値を設定することで,バケット分割が2レベルで完了するようになります※6。2レベルバケット分割がされなかった場合,この値は0となります。
- 3レベル最大バケットサイズ(単位:キロバイト)
ハッシュジョイン,副問合せのハッシュ実行での,3レベルバケット分割後の最大バケットサイズです。※3
ハッシュ表サイズがこの値以上であれば,最大3レベルのバケット分割で,バケット単位に処理されています。ハッシュ表サイズがこの値以下の場合,1バケットを部分的にハッシュ表展開する処理となり,処理効率が悪くなります。この場合,ハッシュ表サイズをこの値以上に設定してください※6。又は,ハッシュジョイン,副問合せのハッシュ実行を適用しないようにした方が性能が良くなる場合があります。3レベルバケット分割がされなかった場合,この値は0となります。
- 空き領域の再利用のページサーチ空回り回数
新規ページ追加モードから空きページ再利用モードに切り替えたときに,再利用できる空き領域がなく,新規ページ追加モードに戻した回数です。この値が0以外の場合,UAPが実行した更新,挿入処理で効率が悪いページサーチ処理が発生していることが考えられます。空き領域の再利用機能については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
- 新規ページ追加モードから空きページ再利用モードへのモード切り替え回数
空き領域の再利用機能実行時に,新規ページ追加モードから空きページ再利用モードへ切り替わった回数です。この値がUAPで実行した更新,挿入処理の回数に近い場合,効率が悪いページサーチ処理が発生していることが考えられます。
- キャッシュバッファ領域不足発生回数
システムが使用する内部情報
- キャッシュバッファ領域割り当てフラッシュ回数
システムが使用する内部情報
- キャッシュバッファ領域割り当てフラッシュ時のwrite回数
システムが使用する内部情報
- 最大キャッシュバッファ領域割り当てフラッシュ回数
システムが使用する内部情報
- 平均キャッシュバッファ領域割り当てフラッシュ回数
システムが使用する内部情報
- ローカルバッファを使用してデータページ,及びインデクスページを参照した回数
該当するUAPから,データページ,及びインデクスページを参照した回数です。
- ローカルバッファを使用してデータページ,及びインデクスページを更新した回数
該当するUAPから,データページ,及びインデクスページを更新した回数です。
- ローカルバッファでのデータページ,及びインデクスページのバッファヒット回数
データページ,及びインデクスページのバッファヒット回数です。
ランダムアクセスするUAPで,バッファヒット率([101]÷[99]×100)が低い場合は,バッファヒット率の悪いバッファのチューニングをしてください。
- ローカルバッファ使用時のデータページ,及びインデクスページの実READ回数
該当するUAPから,データページ,及びインデクスページを実READした回数です。
プリフェッチ機能を使用している場合は,プリフェッチで先読みしたREAD回数も含まれます。バッファヒット率が悪いとREAD回数も多くなります。
- ローカルバッファ使用時のデータページ,及びインデクスページの実WRITE回数
該当するUAPから,データページ,及びインデクスページを実WRITEした回数です。
- ローカルバッファフラッシュ回数
新たなページを入力する空きバッファを作成するために,バッファを無効にした回数(バッファ満杯によって,ページをメモリから追い出した回数)です。
- 非同期READ要求回数
非同期READ機能使用時,非同期READプロセスで一括先読み処理を要求した回数です。
- 非同期READ時の同期待ち回数
非同期READ機能使用時,非同期READプロセスで一括先読み処理での同期待ちが発生した回数です。
- 非同期READ時の同期待ち時間の累計(単位:秒)
非同期READ機能使用時,非同期READプロセスで一括先読み処理での同期待ちが発生した時間の累計です。
- 非同期READ時の同期待ち時間の累計(単位:マイクロ秒)(秒値は含まれません)
非同期READ機能使用時,非同期READプロセスで一括先読み処理での同期待ちが発生した時間の累計です。
- 非同期READ時の平均同期待ち時間(単位:秒)
非同期READ機能使用時,非同期READプロセスで一括先読み処理での同期待ちが発生した時間の平均です。
- 非同期READ時の平均同期待ち時間(単位:マイクロ秒)(秒値は含まれません)
非同期READ機能使用時,非同期READプロセスで一括先読み処理での同期待ちが発生した時間の平均です。
- 非同期READ時の平均同期入出力時間(単位:秒)
非同期READ機能使用時,初回の先頭ページ一括読み込みでの同期READ時間の平均です。
- 非同期READ時の平均同期入出力時間(単位:マイクロ秒)(秒値は含まれません)
非同期READ機能使用時,初回の先頭ページ一括読み込みでの同期READ時間の平均です。
- ハッシュジョイン,副問合せのハッシュ実行でのハッシュ表探索時の最大比較回数※3
1回のハッシュ表探索時の,同一ハッシュ値を持つデータに対する比較回数の
最大値です。
- ハッシュジョイン,副問合せのハッシュ実行でのハッシュ表探索時の総比較回数※1
ハッシュ表探索時の,同一ハッシュ値を持つデータに対する比較回数の合計です。
- ハッシュジョイン,副問合せのハッシュ実行での総ハッシュ表探索回数※1
ハッシュ表を探索した回数です。
- 注※1
- HiRDB/パラレルサーバの場合は,各サーバの合計となります。
- 注※2
- すべてのグローバルバッファの合計となります。
- 注※3
- HiRDB/パラレルサーバの場合は,各バックエンドサーバの最大値となります。
- 注※4
- 一時的なフラグメンテーションによって,見積もり式以上の資源が必要になる場合があるため,実際の指定値には余裕を持たせてください。
- 注※5
- ハッシュ表サイズを大きくすると,1回のバケット分割数が増加することがあるため,チューニング情報取得時よりも大きなハッシュ表サイズが必要になることがあります。このチューニング情報を基にハッシュ表サイズを大きくした場合は,再度チューニング情報を取得してください。そこで意図した結果になっていない場合,チューニング情報を基に再度ハッシュ表サイズを大きくする必要があります。
- 注※6
- ハッシュ表サイズを大きくすると,1回のバケット分割数が増加することがあるため,チューニング情報取得時より小さいハッシュ表サイズでも,意図したレベルでバケット分割が完了することもあります。これに対して,ハッシュ表サイズを小さくすると,1回のバケット分割数が減少することがあるため,チューニング情報取得時と同じレベルでバケット分割が完了しなくなることがあります。したがって,このチューニング情報は,ハッシュ表サイズを大きくしていく場合に使用するようにしてください。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.