SQL性能情報は、以下の情報から構成されています。
SQL文情報
セクション情報
実行エレメント情報
SQL性能情報では、CONTAINS関数を含むSQL文を実行した場合、XMLデータのインデックスへのアクセス情報をTABLE ACCESS実行エレメントの詳細情報で出力します。
参照
TABLE ACCESS実行エレメントの他の詳細情報、およびその他のSQL性能情報の出力内容や形式については、“SQLTOOLユーザーズガイド”を参照してください。
実行エレメント情報とはSQL文実行時に扱ったデータ量および資源量を表す情報で、CONTAINS関数を指定してXMLデータを検索した場合、XMLアダプタでの処理時間、および検索時に使用したインデックスの情報が出力されます。また、それぞれのインデックスは、条件に一致したレコード件数などの性能情報をDSO単位またはDSI単位に出力します。なお、CONTAINS関数の条件によっては、複数のインデックスに対するアクセスが発生する場合があります。
以下にXMLデータのインデックスのSQL性能情報の出力形式を示します。
(1)1つの検索パスのインデックスに対するアクセスの場合 CONTAINS関数の検索条件が '/[受注伝票//発行元 = "A社"]' の場合 index dso name : 受注伝票_XMLIXDSO (1) dso access (read/ins/del/upd) : 10/0/0/0 (2) dsi number (access/total) : 1/1 (3) exec time (exec/wait) : 00:00:00(50)/00:00:00(0) (4) /受注伝票/発行元 -> 1 (5) record number (hit/ins/total) : 10/10/10 (6) index dsi name : 受注伝票_XMLIXDSI1 (7) record number (hit/ins/total) : 10/10/10 (8) (2)複数の検索パスのインデックスに対するアクセスの場合 CONTAINS関数の検索条件が '/[受注伝票//発行元 = "A社" $and$ 受注伝票//商品番号 = "S001"] の場合 index dso name : 受注伝票_XMLIXDSO (1) dso access (read/ins/del/upd) : 2/0/0/0 (2) dsi number (access/total) : 2/2 (3) exec time (exec/wait) : 00:00:00(50)/00:00:00(0) (4) /受注伝票/発行元 -> 1 (5) record number (hit/ins/total) : 20/20/20 (6) index dsi name : 受注伝票_XMLIXDSI1 (7) record number (hit/ins/total) : 10/10/10 (8) index dsi name : 受注伝票_XMLIXDSI2 (7) record number (hit/ins/total) : 10/10/10 (8) 1 AND /受注伝票/商品リスト/商品/商品番号 -> 2 (5) record number (hit/ins/total) : 20/2/2 index dsi name : 受注伝票_XMLIXDSI1 record number (hit/ins/total) :10/1/1 index dsi name : 受注伝票_XMLIXDSI2 record number (hit/ins/total) : 10/1/1
(1)アクセスプランに対応したXMLデータのインデックスのDSO名
(2)DSOごとのレコード読み込み、挿入、削除、および更新件数
(3)アクセスしたDSI数とアクセス対象の表のDSI数
(4)XMLアダプタでの処理時間とXMLアダプタサーバとの接続受付待ち時間
(5)オペレーション情報
“オペレーション情報”を参照してください。
(6)オペレーションごとのDSO内レコード処理件数
条件を満たした満件数/一時保存域への出力件数/一時保存域の結果格納件数
(7)インデックスのDSI名
(8)オペレーションごとのDSI内レコード処理件数
条件を満たした件数/一時保存域への出力件数/一時保存域の結果格納件数
インデックスへのアクセス情報を、“入力情報2 論理演算子 入力情報1 -> 出力情報”の形式で表します。以下の3つのパターンがあります。
入力情報1で示すインデックスから検索を行い、結果を出力情報で示す一時保存域に格納することを表します。アクセス対象のインデックスが1つの場合または複数のインデックスへのアクセスがある場合の最初のオペレーション情報の場合にこの形式となります。
入力情報1で示すインデックスの検索結果または一時保存域に格納したレコードに対して、NOT演算を適用し、結果を出力情報で示す一時保存域に格納することを表します。
入力情報1で示すインデックスの検索結果または一時保存域に格納したレコードに対して、入力情報2で示す一時保存域に格納したレコードとのANDまたはORの論理演算を適用し、結果を出力情報で示す一時保存域に格納することを表します。
以下にTABLE ACCESS実行エレメントのXMLデータのインデックスへのアクセス情報を示す詳細情報を一覧で示します。出力レベル1、出力レベル2の欄は、Symfoware/SQLTOOLでの出力レベルの設定に対応した出力の有無を表しています。
詳細情報 | 意味 | 出力レベル1 | 出力レベル2 |
---|---|---|---|
index dso name | アクセスプランに対応したXMLデータのインデックスのDSO名 | ○ | ○ |
dso access | DSOごとのレコード読込み、挿入、削除または更新件数 | ○ | ○ |
dsi number | アクセスしたDSI数とアクセス対象の表のDSI数 | ○ | ○ |
exec time | XMLアダプタプロセスでの処理時間およびXMLアダプタプロセスでの処理待ち時間 | ○ | ○ |
オペレーション情報 | インデックスへのアクセス情報入力情報2 論理演算子 入力情報1 ->出力情報 | ○ | ○ |
record number | オペレーションごとのDSO内レコード処理件数。条件を満たした件数、一時保存域への出力件数、一時保存域の結果格納件数 | ○ | ○ |
index dsi name | XMLデータのインデックスのDSI名 | × | ○ |
record number | オペレーションごとのDSO内レコード処理件数。条件を満たした件数、一時保存域への出力件数、一時保存域の結果格納件数 | × | ○ |
○:表示する ×:表示しない
以下にSQL性能情報の出力例を示します。以下の例は表を2つに分割運用し、CONTAINS関数の条件が3つのインデックスにアクセスする条件の場合の例です。
例:出力レベルに1を指定した場合
###################### SQL TRACE START 11:59:21 02/23 ######################## SQL statement : SELECT 伝票データ FROM 取引.受注伝票 WHERE CONTAINS(伝票データ, XML(受注伝票 GR, '/[受注伝票//発行元 = "A社" $and$ 受注伝票//商品番号 = "S001" $or$ /受注伝票/商品リスト/商品/商品番号 = "S002"]')>0 Total Time : 00:00:00(128) ============================================================================== ------------------------------------------------------------------------------ Section No : 1 Section Time : 00:00:00(100) ------------------------------------------------------------------------------ [1] TABLE ACCESS table name : 受注伝票 table access (read/ins/del/upd) : 12/0/0/0 base dso name : 受注伝票_BASEDSO dso access (read/ins/del/upd) : 12/0/0/0 dsi number (access/total) : 2/2 index dso name : 受注伝票_XMLIXDSO dso access (read/ins/del/upd) : 12/0/0/0 dsi number (access/total) : 2/2 exec time (exec/wait) : 00:00:00(50)/00:00:00(0) /受注伝票/発行元 -> 1 (1) record number (hit/ins/total) : 20/20/20 (2) 1 AND /受注伝票/商品リスト/商品/商品番号 -> 2 (3) record number (hit/ins/total) : 20/2/2 (4) 2 OR /受注伝票/商品リスト/商品/商品番号 -> 2 (5) record number (hit/ins/total) : 10/10/12 (6) [2] OUTPUT record number : 12 ############################### SQL TRACE END ################################
(1)インデックス“/受注伝票/発行元”を検索し、結果を一時保存域1に格納します。
(2)手順(1)の処理結果レコード数を以下の順で示します。
条件を満たした件数/一時保存域に格納した件数/一時保存域の結果格納件数
(3)一時保存域1(手順(1)の結果格納一時保存域)と、インデックス“/受注伝票/商品リスト/商品/商品番号”の検索結果レコードのAND(重複するレコードの抜き出し)をとり、結果を一時保存域2に格納します。
(4)手順(3)の処理結果レコード数を以下の順で示します。
条件を満たした件数/一時保存域に格納した件数/一時保存域の結果格納件数
(5)一時保存域2(手順(3)の結果格納一時保存域)と、インデックス“/受注伝票/商品リスト/商品/商品番号”の検索結果レコードのOR(重複しないレコードの追加挿入)をとり、結果を一時保存域2に格納します。
(6)手順(5)の処理結果レコード数を以下の順で示します。
条件を満たした件数/一時保存域に格納した件数/一時保存域の結果格納件数
出力レベルに2を指定した場合
###################### SQL TRACE START 11:59:21 02/23 ######################## SQL statement : SELECT 伝票データ FROM 取引.受注伝票 WHERE CONTAINS(伝票データ, XML(受注伝票 GR, '/[受注伝票//発行元 = "A社" $and$ 受注伝票//商品番号 = "S001" $or$ /受注伝票/商品リスト/商品/商品番号 = "S002"]')>0 Total Time : 00:00:00(128) ============================================================================== ------------------------------------------------------------------------------ Section No : 1 Section Time : 00:00:00(100) ------------------------------------------------------------------------------ [1] TABLE ACCESS table name : 受注伝票 table access (read/ins/del/upd) : 12/0/0/0 base dso name : 受注伝票_BASEDSO dso access (read/ins/del/upd) : 12/0/0/0 dsi number (access/total) : 2/2 base dsi name : 受注伝票_BASEDSI1 dsi access (read/ins/del/upd) : 6/0/0/0 base dsi name : 受注伝票_BASEDSI2 dsi access (read/ins/del/upd) : 6/0/0/0 index dso name : 受注伝票_XMLIXDSO dso access (read/ins/del/upd) : 12/0/0/0 dsi number (access/total) : 2/2 exec time (exec/wait) : 00:00:00(50)/00:00:00(0) /受注伝票/発行元 -> 1 record number (hit/ins/total) : 20/20/20 index dsi name : 受注伝票_XMLIXDSI1 record number (hit/ins/total) : 10/10/10 index dsi name : 受注伝票_XMLIXDSI2 record number (hit/ins/total) : 10/10/10 1 AND /受注伝票/商品リスト/商品/商品番号 -> 2 record number (hit/ins/total) : 20/2/2 index dsi name : 受注伝票_XMLIXDSI1 record number (hit/ins/total) : 10/1/1 index dsi name : 受注伝票_XMLIXDSI2 record number (hit/ins/total) : 10/1/1 2 OR /受注伝票/商品リスト/商品/商品番号 -> 2 record number (hit/ins/total) : 10/10/12 index dsi name : 受注伝票_XMLIXDSI1 record number (hit/ins/total) : 5/5/6 index dsi name : 受注伝票_XMLIXDSI2 record number (hit/ins/total) : 5/5/6 [2] OUTPUT record number : 12 ############################### SQL TRACE END ################################