sqltoolユーザーズガイド - fujitsu...

137
J2X1-7483-02Z0(00) 20102Windows/Solaris/Linux Symfoware Server V10.0.0 SQLTOOLユーザーズガイド

Upload: others

Post on 12-Oct-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

J2X1-7483-02Z0(00)2010年2月

Windows/Solaris/Linux

Symfoware Server V10.0.0

SQLTOOLユーザーズガイド

まえがき

本書の目的

本書は、Symfoware/SQLTOOLの使用方法を説明しています。

本書の読者

本書は、Symfoware/SQLTOOLを使用し、アプリケーション開発や性能チューニングを行う方に読んでいただくように書

かれています。

本書を読むためには、以下の知識が必要です。

・ コンピュータについての一般的な知識

・ リレーショナルデータベースについての知識

・ Symfowareデータベースについての知識

・ SQLに関する知識

・ データベースシステムの性能チューニングに関する知識

・ 業務に関する知識

本書の構成

本書の構成と内容は以下のとおりです。

第1章 Symfoware/SQLTOOLの概要

Symfoware/SQLTOOLの概要について説明しています。

第2章 Symfoware/SQLTOOLの使用方法

Symfoware/SQLTOOLの環境設定、起動と停止について説明しています。

第3章 アプリケーション開発を支援する

Symfoware/SQLTOOLを使って、アプリケーション開発を支援する方法について説明しています。

第4章 データベースをチューニングする

Symfoware/SQLTOOLを使って、データベースをチューニングする方法について説明しています。

第5章 制御文リファレンス

Symfoware/SQLTOOLで利用できる制御文について説明しています。

コマンド操作例について

本書で説明しているコマンド操作例は、UNIX系システムを前提として記載しています。Windows(R)で操作する場合は、

以下の表に従って読み替えてください。

UNIX系での操作の場合 Windows(R)での操作の場合

/tmp/out_data E:\TMP\OUT_DATA

/tmp/sqlfile.txt E:\TMP\SQLFILE.TXT

/tmp/plan E:\TMP\PLAN

/tmp/trace.log E:\TMP\TRACE.LOG

/tmp/sql.snp E:\TMP\SQL.SNP

/tmp/tbl.log E:\TMP\TBL.LOG

/tmp/exec.log E:\TMP\EXEC.LOG

/tmp/index.log E:\TMP\INDEX.LOG

- i -

UNIX系での操作の場合 Windows(R)での操作の場合

/tmp/statistics.log E:\TMP\STATISTICS.LOG

平成 22年 1月 初版

平成 22年 2月 第2版

- ii -

目 次

第1章 Symfoware/SQLTOOLの概要.........................................................................................................................................11.1 Symfoware/SQLTOOLの機能............................................................................................................................................................1

1.1.1 アプリケーションの開発支援機能................................................................................................................................................11.1.2 データベースのチューニング機能...............................................................................................................................................31.1.3 サービス機能................................................................................................................................................................................4

1.2 Symfoware/SQLTOOLの適用範囲....................................................................................................................................................5

第2章 Symfoware/SQLTOOLの使用方法.................................................................................................................................92.1 環境設定.............................................................................................................................................................................................9

2.1.1 環境設定(Solaris/Linux)..............................................................................................................................................................92.1.2 環境設定(Windows)..................................................................................................................................................................10

2.2 rdbexecsqlコマンドからの利用..........................................................................................................................................................112.2.1 Symfoware/SQLTOOLの起動...................................................................................................................................................112.2.2 Symfoware/SQLTOOLの停止...................................................................................................................................................132.2.3 rdbexecsqlコマンドで扱うSQL文の範囲....................................................................................................................................132.2.4 文字コード系の指定...................................................................................................................................................................142.2.5 出力形式....................................................................................................................................................................................152.2.6 データの表示形式......................................................................................................................................................................162.2.7 トランザクション制御...................................................................................................................................................................192.2.8 複数行指定................................................................................................................................................................................202.2.9 引数による可変要素の指定.......................................................................................................................................................212.2.10 SQL文でのエラー発生時の対処.............................................................................................................................................222.2.11 rdbexecsqlコマンドの排他について.........................................................................................................................................262.2.12 出力メッセージと対処...............................................................................................................................................................262.2.13 処理を中断する場合................................................................................................................................................................28

2.3 アプリケーションからの利用..............................................................................................................................................................29

第3章 アプリケーション開発を支援する.....................................................................................................................................303.1 データベースを構築する..................................................................................................................................................................303.2 データベースを操作する..................................................................................................................................................................31

第4章 データベースをチューニングする....................................................................................................................................344.1 データベースのチューニング作業....................................................................................................................................................34

4.1.1 データベース構築時..................................................................................................................................................................344.1.2 アプリケーション開発時..............................................................................................................................................................344.1.3 性能検証チューニング時...........................................................................................................................................................354.1.4 業務への機能追加時.................................................................................................................................................................36

4.2 アクセスプランを取得する.................................................................................................................................................................364.2.1 rdbexecsqlコマンドを使用してアクセスプランを取得する.........................................................................................................374.2.2 アプリケーションからアクセスプランを取得する........................................................................................................................374.2.3 アクセスプランの取得内容.........................................................................................................................................................384.2.4 アクセスプランの出力形式.........................................................................................................................................................394.2.5 アクセスプランの出力例.............................................................................................................................................................53

4.3 SQL性能情報を取得する.................................................................................................................................................................564.3.1 rdbexecsqlコマンドを使用して実行時のSQL性能情報を取得する..........................................................................................564.3.2 rdbexecsqlコマンドを使用してSQL_SNAP情報を取得する.....................................................................................................564.3.3 アプリケーションからSQL性能情報を取得する.........................................................................................................................574.3.4 アプリケーションからSQL_SNAP情報を取得する....................................................................................................................574.3.5 SQL性能情報の取得内容.........................................................................................................................................................584.3.6 SQL性能情報の出力形式.........................................................................................................................................................58

4.3.6.1 SQL文情報..........................................................................................................................................................................624.3.6.2 セクション情報.....................................................................................................................................................................634.3.6.3 実行エレメント情報..............................................................................................................................................................63

4.3.7 SQL性能情報の出力例.............................................................................................................................................................754.4 アドバイスを取得する........................................................................................................................................................................96

- iii -

4.4.1 RDBシステム単位にアドバイスを取得する...............................................................................................................................974.4.2 SQLアドバイザの取得内容........................................................................................................................................................974.4.3 SQLアドバイザの出力形式........................................................................................................................................................984.4.4 SQLアドバイザの出力例............................................................................................................................................................98

4.5 適化情報をチューニングする.....................................................................................................................................................1004.5.1 適化情報を変更する............................................................................................................................................................1004.5.2 適化情報を表示する............................................................................................................................................................100

4.6 動作環境をチューニングする.........................................................................................................................................................1014.6.1 動作環境の動的変更...............................................................................................................................................................1014.6.2 実行パラメタの表示..................................................................................................................................................................102

4.7 ASSIST指定でアクセスプランを固定化する..................................................................................................................................102

第5章 制御文リファレンス.......................................................................................................................................................1045.1 制御文一覧表.................................................................................................................................................................................1045.2 ACCESS PLAN文...........................................................................................................................................................................1075.3 CALL文...........................................................................................................................................................................................1085.4 CHANGE ENV文............................................................................................................................................................................1085.5 COLUMN文....................................................................................................................................................................................1145.6 COLUMN FORMAT文..................................................................................................................................................................1155.7 COMMIT文.....................................................................................................................................................................................1165.8 CONNECT文...................................................................................................................................................................................1165.9 DELETE文......................................................................................................................................................................................1165.10 HELP文.........................................................................................................................................................................................1175.11 HISTORY文..................................................................................................................................................................................1175.12 INFILE文.......................................................................................................................................................................................1185.13 INSERT文.....................................................................................................................................................................................1185.14 LOG文...........................................................................................................................................................................................1195.15 PRINT文........................................................................................................................................................................................1195.16 PRINT ENV文...............................................................................................................................................................................1215.17 PRINT STATISTICS文.................................................................................................................................................................1235.18 ROLLBACK文..............................................................................................................................................................................1235.19 SELECT文.....................................................................................................................................................................................1245.20 SET CATALOG文........................................................................................................................................................................1245.21 SET ROLE文.................................................................................................................................................................................1245.22 SET SCHEMA文...........................................................................................................................................................................1255.23 SET SESSION AUTHORIZATION文.........................................................................................................................................1255.24 SET STATISTICS文.....................................................................................................................................................................1255.25 SET TRANSACTION文...............................................................................................................................................................1275.26 SNAP文.........................................................................................................................................................................................1285.27 SQL TRACE文..............................................................................................................................................................................1285.28 UPDATE文....................................................................................................................................................................................129

索引......................................................................................................................................................................................131

- iv -

第1章 Symfoware/SQLTOOLの概要

本章では、Symfoware/SQLTOOLの概要について説明します。

1.1 Symfoware/SQLTOOLの機能

Symfoware/SQLTOOLの機能を以下に示します。

1.1.1 アプリケーションの開発支援機能

Symfoware/SQLTOOLでは、アプリケーションの開発支援機能として、以下の機能を提供しています。

・ データベースの構築機能

・ データベースの操作機能

データベースの構築機能

Symfoware/SQLTOOLでは、データベースの構築に必要な一連の処理を実行することができます。データベースの構築

機能を利用して実行できるSQL文を以下に示します。

機能名 実行可能なSQL文

データベース定義文・ CREATE DATABASE文

・ CREATE DBSPACE文

- 1 -

機能名 実行可能なSQL文

データベース操作文・ DROP DATABASE文

・ DROP DBSPACE文

スキーマ定義文

・ CREATE SCHEMA文

・ CREATE TABLE文

・ CREATE VIEW文

・ CREATE PROCEDURE文

・ CREATE FUNCTION文

・ CREATE INDEX文

・ CREATE TRIGGER文

・ CREATE SEQUENCE文

スキーマ操作文

・ DROP SCHEMA文

・ DROP TABLE文

・ ALTER TABLE文

・ DROP VIEW文

・ DROP PROCEDURE文

・ DROP INDEX文

・ DROP TRIGGER文

・ SWAP TABLE文

・ DROP SEQUENCE文

・ DROP FUNCTION文

格納構造定義文

・ CREATE DSO文

・ CREATE DSI文

・ CREATE SCOPE文

格納構造操作文

・ DROP DSO文

・ DROP DSI文

・ ALTER DSI文

・ DROP SCOPE文

・ APPLY SCOPE文

・ RELEASE SCOPE文

・ PRINT STATISTICS文

・ SET STATISTICS文

利用者制御文

・ CREATE USER文

・ DROP USER文

・ ALTER USER文

アクセス制御文

・ CREATE ROLE文

・ DROP ROLE文

・ GRANT文

- 2 -

機能名 実行可能なSQL文

・ REVOKE文

・ SET ROLE文

システム制御文・ SET SYSTEM PARAMETER

データベースの操作機能

Symfoware/SQLTOOLでは、データベースを操作する機能を提供しています。データベースの操作機能を利用すること

で、以下の作業を行うことができます。

・ 作成したSQL文の実行検証

・ データベース内のデータ検索

・ データベース内のデータ更新

データベースの操作機能を利用して、対話的に実行できるSQL文を以下に示します。

機能名 実行可能なSQL文

データ操作文

・ SELECT文

・ INSERT文

・ UPDATE文

・ DELETE文

・ CALL文

トランザクション管理文

・ SET TRANSACTION文

・ COMMIT文

・ ROLLBACK文

セション管理文

・ SET CATALOG文

・ SET SCHEMA文

・ SET SESSIONAUTHORIZATION文

コネクション管理文 ・ CONNECT文

アクセス制御文 ・ SET ROLE文

1.1.2 データベースのチューニング機能

Symfoware/SQLTOOLでは、データベースのチューニング機能として以下の機能を提供しています。

・ アクセスプランの取得

・ 性能情報の取得

・ 適化情報の変更・表示

・ チューニング情報の変更・表示

アクセスプランの取得

作成したSQL文のアクセス手順を取得します。取得したアクセスプランにより、対象のSQL文が使用するインデックスおよ

び表の結合順などを知ることができ、データベースの設計どおりに、SQL文が動作しているかを検証することができます。

アクセスプランを取得するための制御文を以下に示します。

- 3 -

・ ACCESS PLAN文

性能情報の取得

SQL文実行時の資源使用情報を性能情報として取得します。この情報は、アクセスプランと比較し、SQLの動作を分析

し、SQLの動作環境をチューニングする場合に利用します。

性能情報を取得するための制御文を以下に示します。

・ SQL TRACE文

・ SNAP文

最適化情報の変更・表示

データベースの 適化情報を変更・表示します。

適化情報を表示・変更するための制御文を以下に示します。

・ SET STATISTICS文

・ PRINT STATISTICS文

チューニング情報の変更・表示

実行中のSQL環境のチューニング情報を動的に変更します。また、チューニング情報を表示することもできます。

チューニング情報を変更・表示するための制御文を以下に示します。

・ CHANGE ENV文

・ PRINT ENV文

1.1.3 サービス機能

Symfoware/SQLTOOLでは、サービス機能として以下の機能を提供しています。

・ ファイル出力指定

・ 列名表示

・ 表示幅制御

・ 結果表示制御

・ 対話型ファイル読込み

・ 実行履歴表示

・ 複数行指定

・ コマンドヘルプ

ファイル出力指定

SQL文の実行結果をファイルに取得します。

ファイル出力を指定するための制御文を以下に示します。

・ LOG文

列名表示

定義されている表の列名を表示します。

列名を表示するための制御文を以下に示します。

・ COLUMN文

- 4 -

表示幅制御

SQL文の実行結果の画面表示およびファイル出力への表示幅を制御します。

表示幅を制御するための制御文を以下に示します。

・ COLUMN FORMAT文

結果表示制御

SQL文の実行結果の画面表示を制御します。

結果表示を制御するための制御文を以下に示します。

・ PRINT文

対話型ファイル読込み

ファイル中のSQL文を順次表示しながら対話的に、そのSQL文を実行するかどうかを問い合わせます。

対話的にファイルを読み込むための制御文を以下に示します。

・ INFILE文

実行履歴表示

過去に実行したヒストリの表示、およびヒストリの実行を指定します。

実行履歴を表示するための制御文を以下に示します。

・ HISTORY文

複数行指定

プロシジャルーチン定義時の複数行指定を可能とします。

複数行指定するための制御文を以下に示します。

・ EXEC SQL文、END-EXEC文

コマンドヘルプ

rdbexecsqlコマンドの使用方法を画面に表示します。

コマンドヘルプを使用するための制御文を以下に示します。

・ HELP文

1.2 Symfoware/SQLTOOLの適用範囲

Symfoware/SQLTOOLは、以下のデータベース開発業務に適用できます。

・ データベース構築時

・ アプリケーション開発時

・ 性能検証チューニング時

- 5 -

・ 業務への機能追加時

注意

データベース運用時の性能情報の取得については、SQL_SNAP、rdbpsコマンド、またはrdbsarコマンドを使用してくださ

い。

データベース構築時およびアプリケーション開発時

新規にデータベースの構築およびアプリケーションの開発を行う場合、以下のようにデータベースの構築および 適化

情報を設定します。

・ データベースの設計に基づきデータベースを構築します。

→ rdbexecsqlコマンドを利用して、データベースを構築します。

・ 将来的なデータベースの規模を予想し、 適化情報を設定します。

→ rdbexecsqlコマンドを利用して、 適化情報を設定します。

次にデータベースの設計どおりにSQL文が動作していることを確認します。設計どおりに動作していない場合は、チュー

ニングを実施します。

・ アプリケーションを実行してアクセスプランを取得し、SQL文の動作を確認します。

→ 設計どおりに動作していない場合はチューニングを実施します。

・ アプリケーションの作成途中に、rdbexecsqlコマンドを利用してSQL文の動作を確認します。

→ 設計どおりに動作していない場合はチューニングを実施します。

- 6 -

性能検証のチューニング時

データベースの構築後、ある程度のデータを格納して運用テストを行い、性能検証をします。SQL_SNAP機能、

ROUTINE_SNAP機能またはパフォーマンスモニタを利用して、性能の悪いSQL文を絞り込み、rdbexecsqlコマンドを利

用してアクセスプランの取得とSQL性能情報を取得し、分析してチューニングを実施します。

また、データベースバッファのチューニング、デッドロックまたはトランザクション排他待ちの検証もここで実施します。

業務への機能追加時

運用中のデータベースに新しい業務を追加する場合、テスト環境にデータベースの定義を複写し、テスト環境において

データベースのチューニングを行います。テスト環境では、追加業務の検証に加えて、運用中の業務のアクセスプランも

- 7 -

合わせて検証し、運用中業務に影響がないことを確認します。その後、運用中環境にチューニング結果を反映し、新し

い業務を追加します。

- 8 -

第2章 Symfoware/SQLTOOLの使用方法

本章では、Symfoware/SQLTOOLの使用方法について説明します。

2.1 環境設定

Symfoware/SQLTOOLの環境設定について説明します。

・ 2.1.1 環境設定(Solaris/Linux)

・ 2.1.2 環境設定(Windows)

2.1.1 環境設定(Solaris/Linux)Symfoware/SQLTOOLを実行するために、以下の環境変数の設定が必要です。

・ 環境変数LD_LIBRARY_PATH

・ 環境変数RDBNAME

環境変数LD_LIBRARY_PATHの設定

環境変数“LD_LIBRARY_PATH”の設定例を以下に示します。

Solarisの場合

例1

Cシェルの場合

RDBライブラリの格納ディレクトリ:/opt/FSUNrdb2b/lib

setenv LD_LIBRARY_PATH /opt/FSUNrdb2b/lib:$LD_LIBRARY_PATH

例2

bash、Bシェル、Kシェルの場合

RDBライブラリの格納ディレクトリ:/opt/FSUNrdb2b/lib

LD_LIBRARY_PATH=/opt/FSUNrdb2b/lib:$LD_LIBRARY_PATH ; export LD_LIBRARY_PATH

Linuxの場合

例1

TCシェルの場合

RDBライブラリの格納ディレクトリ:/opt/FJSVrdb2b/lib

setenv LD_LIBRARY_PATH /opt/FJSVrdb2b/lib:$LD_LIBRARY_PATH

例2

bashの場合

RDBライブラリの格納ディレクトリ:/opt/FJSVrdb2b/lib

LD_LIBRARY_PATH=/opt/FJSVrdb2b/lib:$LD_LIBRARY_PATH ; export LD_LIBRARY_PATH

- 9 -

環境変数RDBNAMEの設定

環境変数“RDBNAME”の設定例を以下に示します。

rdbexecsqlコマンドまたはアプリケーションで処理を行う対象となるSymfoware/RDB環境のRDBシステム名を、環境変

数“RDBNAME”に設定します。この環境変数は、ローカルアクセスの場合のみ有効となります。ただし、Symfoware/RDB環境にRDBシステム名をつけていない場合は、本設定は不要です。

例1

Cシェルの場合

RDBシステム名:rdbsys1

setenv RDBNAME rdbsys1

TCシェルの場合

RDBシステム名:rdbsys1

setenv RDBNAME rdbsys1

例2

bash、Bシェル、Kシェルの場合

RDBシステム名:rdbsys1

RDBNAME=rdbsys1 ; export RDBNAME

bashの場合

RDBシステム名:rdbsys1

RDBNAME=rdbsys1 ; export RDBNAME

2.1.2 環境設定(Windows)Symfoware/SQLTOOLを実行するために、以下の環境変数の設定が必要です。

・ 環境変数RDBNAME

・ 環境変数RDBCMDMSGEVENTLOG

環境変数RDBNAMEの設定

環境変数“RDBNAME”の設定例を以下に示します。

rdbexecsqlコマンドまたはアプリケーションで処理を行う対象となるSymfoware/RDB環境のRDBシステム名を、環境変

数“RDBNAME”に設定します。この環境変数は、ローカルアクセスの場合のみ有効となります。ただし、Symfoware/RDB環境にRDBシステム名をつけていない場合は、本設定は不要です。

環境変数“RDBNAME”の設定を行う場合(RDBシステム名をrdbsys1とした場合)

set RDBNAME=rdbsys1

参照

クライアント用の動作環境ファイルを利用して、事前に動作環境のチューニングを行っている場合、環境変

数“SQLRTENV”にクライアント用の動作環境ファイルを設定する必要があります。

- 10 -

上記の詳細については、“アプリケーション開発ガイド(埋込みSQL編)”を参照してください。

環境変数RDBCMDMSGEVENTLOGの設定

rdbexecsqlコマンド実行時に、コマンド実行者の対処が必要なqdgメッセージをイベントログへ出力するか否かを、環境変

数“RDBCMDMSGEVENTLOG”で指定します。ただし、イベントログへのqdgメッセージ出力制御を行わない場合は、本

設定は不要です。

環境変数“RDBCMDMSGEVENTLOG”の設定を行う場合(イベントログへのメッセージ出力制御を行う場合)

set RDBCMDMSGEVENTLOG=NO

参照

RDBCMDMSGEVENTLOGの設定およびシステムの環境変数の設定方法の詳細については“セットアップガイド”

の“環境変数の設定”を参照してください。

2.2 rdbexecsqlコマンドからの利用

データベースの構築中やアプリケーションの開発中に、SQL文の動作を1行ずつ確認したい場合に、rdbexecsqlコマンド

を利用します。

rdbexecsqlコマンドは、アプリケーションと同じように動作環境ファイルや環境変数を読み込んでSQL文を実行します。

Symfoware/SQLTOOLをrdbexecsqlコマンドから利用する方法を説明します。

2.2.1 Symfoware/SQLTOOLの起動

Symfoware/SQLTOOLをコマンドから利用する場合は、rdbexecsqlコマンドを実行します。

参照

rdbexecsqlコマンドの指定方法の詳細については、“コマンドリファレンス”を参照してください。

rdbexecsqlコマンドの利用方法

SQLサーバ名を指定して起動する

接続先のSQLサーバ名を指定してrdbexecsqlコマンドを実行します。指定されたSQLサーバ名を使用してCONNECT文が実行されます。

ローカルアクセスする場合は、SQLサーバ名としてデータベース名を指定します。

サーバへの接続が完了すると、コマンドを入力するためのプロンプトが表示されます。

データベースUSER_DBにローカルアクセスする場合

$ rdbexecsql -s USER_DB

SQL>

参照

クライアント用の動作環境ファイルの詳細については、“アプリケーション開発ガイド(共通編)”を参照してください。

- 11 -

ユーザ名を指定して起動する

通常は、ツール起動時のユーザ名でサーバに結合します。このユーザ名は変更することができます。

Solaris/Linuxの場合

rdbexecsqlコマンド実行時にユーザ名を指定すると、パスワードの入力を要求するプロンプトが表示されます。指

定したユーザ名とパスワードを使用して、CONNECT文が実行されます。

ユーザ名user01を指定して、データベースUSER_DBにローカルアクセスする場合

$ rdbexecsql -s USER_DB -u user01

Password:

SQL>

Windowsの場合

rdbexecsqlコマンド実行時にユーザ名を指定すると、パスワードの入力のダイアログボックスが表示されます。パス

ワードを入力し、OKボタンを押してください。

ユーザ名user01を指定して、データベースUSER_DBにローカルアクセスする場合

C:\>rdbexecsql -s USER_DB -u user01

ポイント

CONNECT文またはSESSION AUTHORIZATION文実行時に、パスワードを省略した場合も、パスワード入力ダ

イアログボックスが表示されます。

rdbexecsqlコマンドの利用形態

rdbexecsqlコマンドの利用形態には、以下の2つがあります。

・ 対話型

・ ファイル読込み

対話型

画面からSQL文や制御文を入力し、その結果を画面に出力します。

- 12 -

ファイル読込み

あらかじめ決められたSQL文を実行する場合には、実行するコマンド一覧を記述したファイルを作成しておき、rdbexecsqlコマンドの実行時にiオプションでこのファイルを指定します。この場合には、画面から入力するのではなく、ファイル

から一行ずつコマンドを読み込みながら実行し、その結果を画面に出力します。ファイルの 後の行まで実行すると、

rdbexecsqlコマンドは自動的に終了します。

2.2.2 Symfoware/SQLTOOLの停止

Symfoware/SQLTOOLを停止するには、QUITコマンドを実行します。入力を受け付けるプロンプトに対して、停止コマン

ドを実行することによって、rdbexecsqlコマンドを終了させることができます。rdbexecsqlコマンド終了時にはDISCONNECT文が実行されます。終了していないトランザクションが存在した場合には、内部的にROLLBACK文が実行された後に

DISCONNECT文が実行されます。

Symfoware/SQLTOOLを停止する

SQL> QUIT

2.2.3 rdbexecsqlコマンドで扱うSQL文の範囲

rdbexecsqlコマンドで扱うSQL文の範囲について説明します。

rdbexecsqlコマンドで扱うSQL文

rdbexecsqlコマンドで使用できるSQL文の範囲は以下の通りです。

・ データベース定義文

・ データベース操作文

・ スキーマ定義文

・ スキーマ操作文

・ 格納構造定義文

・ 格納構造操作文

・ 利用者制御文

- 13 -

・ アクセス制御文

・ システム制御文

・ データ操作文

・ トランザクション管理文

・ セション管理文

・ コネクション管理文

ただし、以下の条件に該当するSQL文は使用できません。

利用者制御文の制限

利用者制御文のうち、以下のSQL文は使用できません。

- SET USER PASSWORD文

データ操作文の制限

SQL文の長さが32000バイトを超えるデータ操作文は使用できません。

コネクション管理文の制限

コネクション管理文のうち、以下のSQL文は使用できません。

- SET CONNECTION文

- DISCONNECT文

ホスト変数などの動的パラメタが記述されているSQL文

指定されたSQL文にホスト変数を記述した場合はエラーとなります。

指定できるSQL文についての詳細は、“第5章 制御文リファレンス”を参照してください。

カーソルを使用して更新するSQL文

SELECT文を指定すると、SQL文を被準備文としてPREPARE文、OPEN文、FETCH文、CLOSE文が自動的に実行

されます。カーソルを使用して更新するSQL文は使用できません。

SELECT文の詳細については、“5.19 SELECT文”を参照してください。

注意

・ BLOBデータの場合、INSERT文およびUPDATE文は使用できません。

・ 接続中のデータベースは、DROP DATABASE文で削除できません。接続中のデータベースを削除する場合は、

RDBII_DICTIONARYなどの別のデータベースに接続してから、DROP DATABASE文を実行してください。

2.2.4 文字コード系の指定

rdbexecsqlコマンドで扱う文字コード系について説明します。

データベースに格納する文字情報は以下の文字コード系で使用できます。

・ EUCコード

・ シフトJISコード

・ UNICODE

ただし、本コマンドは常にSymfoware/RDBのロケールで動作します。

クライアント用の動作環境ファイルの実行パラメタ“NCHAR_CODE”について

rdbexecsqlコマンドは常にSymfoware/RDBのロケールで動作します。クライアント用の動作環境ファイルの実行パラメ

タ“NCHAR_CODE”の指定は無効になります。

- 14 -

参照

クライアント用の動作環境ファイルの詳細は、“アプリケーション開発ガイド(共通編)”を参照してください。

2.2.5 出力形式

rdbexecsqlコマンドでのSQL文実行結果の出力形式について説明します。

データの表示形式は、コマンド起動時のmoオプション指定により決まります。

表示形式には、以下の2種類があります。

・ バーティカル形式(moオプション指定なし)

・ 表形式(moオプション指定あり)

バーティカル形式の出力形式

rdbexecsqlコマンドの起動時にmoオプションを指定しない場合、SQL文の実行結果をバーティカル形式で出力します。

バーティカル形式のSQL文実行結果は以下の順で表示します。

・ 結果データ(SELECT文のみ)

・ Number of records(処理結果行数)

・ SQLSTATE

・ メッセージ

SELECT文での結果データは列名、検索値データを表示します。

SQL>SELECT INT_D FROM SCM1.TBL1

<<1>> --------------------------------(1)

INT_D:1 --------------------------------(2)

Number of records:1 --------------------------------(3)

SQLSTATE:00000 --------------------------------(4)

SQLMSG:JYP2001I 正常に終了しました.-----------------------------(5)

(1) 結果データ(件数)を表示します。(注1)

(2) 結果データ(列名とデータ)を表示します。(注1)

(3) Number of records(処理結果行数)を表示します。(注2)

(4) SQLSTATEを表示します。

(5) メッセージを表示します。

注1) SELECT文のみ表示

注2) INSERT文、UPDATE文、またはDELETE文を実行した際に被トリガSQL文がINSERT文であるトリガが動作した場

合、その処理結果行数も含まれます。

COUNT(*)、AVGなどのように結果の列の名前がない場合は、選択リストに指定した項目の順番を表示します。

SQL>SELECT COUNT(*) FROM SCM1.TBL1

<<1>>

1:1

Number of records:1

SQLSTATE:00000

SQLMSG:JYP2001I 正常に終了しました.

表形式の出力形式

rdbexecsqlコマンドの起動時にmoオプションを指定した場合、SQL文の実行結果を表形式で出力します。

- 15 -

表形式のSQL文実行結果は以下の順で表示します。

・ 結果データ(SELECT文のみ)

・ Number of records(処理結果行数)

・ メッセージ(異常時のみ)

SELECT文での結果データは列名、検索値データを表示します。

SQL>SELECT INT_D FROM SCM1.TBL1

INT_D --------------------------------(1)

-----------

1 --------------------------------(2)

Number of records:1 --------------------------------(3)

(1) 結果データ(列名)を表示します。(注1)

(2) 結果データ(データ)を表示します。(注1)

(3) Number of records(処理結果行数)を表示します。(注2)

注1) SELECT文のみ表示

注2) INSERT文、UPDATE文、またはDELETE文を実行した際に被トリガSQL文がINSERT文であるトリガが動作した場

合、その処理結果行数も含まれます。

COUNT(*)、AVGなどのように結果の列の名前がない場合は、選択リストに指定した項目の順番を表示します。

SQL>SELECT COUNT(*) FROM SCM1.TBL1

1

-----------

1

Number of records:1

2.2.6 データの表示形式

rdbexecsqlコマンドでのデータの表示形式について説明します。

なお、以下の例は、基本的に、出力形式としてバーティカル形式を選択した場合の例になっています。BLOBの場合の

み、表形式の出力例も示しています。

表示データ長

数値データおよび日時データは、結果属性の有効データで表示します。文字データおよびBLOBデータは、COLUMNFORMAT文で指定した長さに従います。

COLUMN FORMAT文に指定できる値と省略値を、“表2.1 データ表示範囲”に示します。

表2.1 データ表示範囲

データ型 最小値 最大値バーティカル形

式の省略値

表形式の省

略値

CHARVCHAR

1 32000(注) 100 10

NCHARNCHARVARYING

2 32000(注) 100 10

BLOB 12147483647(注)

1024 10

注)表形式のデータ表示では、1行80バイトで自動的に改行されます。

- 16 -

参照

データ型についての詳細は、“SQLリファレンス”を参照してください。

CHAR/CHARACTER(文字列型のデータ型:固定長)

表示させたい長さを指定して表示します。(8バイト分表示)

SQL>COLUMN FORMAT CHARMAX 8

SQL>SELECT CHAR_D FROM SCM1.TBL1

<<1>>

CHAR_D:あいうえ

VCHAR/VARYING CHARACTER(文字列型のデータ型:可変長)

表示させたい長さを指定して表示します。(10バイト分表示)

SQL>COLUMN FORMAT CHARMAX 10

SQL>SELECT VCHAR_D FROM SCM1.TBL1

<<1>>

VCHAR_D:あいうえお

NCHAR/NATIONAL CHAR(各国語文字列型のデータ型:固定長)

表示させたい長さを指定して表示します。(10バイト分表示)

SQL>COLUMN FORMAT NCHARMAX 10

SQL>SELECT NCHAR_D FROM SCM1.TBL1

<<1>>

NCHAR_D:あいうえお

NCHAR VARYING/NATIONAL VCHAR(各国語文字列型のデータ型:可変長)

表示させたい長さを指定して表示します。(12バイト分表示)

SQL>COLUMN FORMAT NCHARMAX 12

SQL>SELECT NVCHAR_D FROM SCM1.TBL1

<<1>>

NVCHAR_D:あいうえおか

DECIMAL(真数型のデータ型、10進の精度と位取りを持つ)

定義時の精度および位取りに基づいて表示します。

DECIMAL(9,3)

SQL>SELECT DECIMAL_D FROM SCM1.TBL1

<<1>>

DECIMAL_D:+123456.789

<<2>>

DECIMAL_D:-000123.400

- 17 -

NUMERIC(真数型のデータ型、10進の精度と位取りを持つ)

定義時の精度および位取りに基づいて表示します。

NUMERIC(9,3)

SQL>SELECT NUMERIC_D FROM SCM1.TBL1

<<1>>

NUMERIC_D:+123456.789

<<2>>

NUMERIC_D:-000123.400

INTEGER(真数型のデータ型、2進の精度を持つ:精度31)またはSMALLINT(真数型のデータ型、2進の精度を持つ:精度15)

SQL>SELECT INT_D,SMALLINT_D FROM SCM1.TBL1

<<1>>

INT_D :1

SMALLINT_D:1

<<2>>

INT_D :-2

SMALLINT_D:-2

DATE,TIME,TIMESTAMP(日時型のデータ型)

SELECT DATE_D,TIME_D,TIMESTAMP_D FROM SCM1.TBL1

<<1>>

DATE_D :2000-01-01

TIME_D :12:00:00

TIMESTAMP_D:2000-01-01 12:00:00

INTERVAL(時間隔型のデータ型)

INTERVAL_D INTERVAL YEAR(4) TO MONTH

SQL>SELECT INTERVAL_D FROM SCM1.TBL1

<<1>>

INTERVAL_D:0000-01

BLOB(BLOB型のデータ型:バイナリ属性のデータを格納可能)

例1

BLOBデータをバーティカル形式で先頭から64バイト表示します。

格納されているBLOBデータの長さを示す8バイト分のデータが、先頭に表示されます。

SQL>COLUMN FORMAT BLOBMAX 64

SQL>SELECT BLOB_D FROM SCM1.TBL1

<<1>>

BLOB_D:45ea0: 00000000 000003e8 41414141 41414141: ........AAAAAAAA

45eb0: 41414141 41414141 41414141 41414141: AAAAAAAAAAAAAAAA

45ec0: 41414141 41414141 41414141 41414141: AAAAAAAAAAAAAAAA

45ed0: 41414141 41414141 41414141 41414141: AAAAAAAAAAAAAAAA

例2

BLOBデータを表形式で先頭から64バイト表示します。

SQL>COLUMN FORMAT BLOBMAX 64

SQL>SELECT BLOB_D FROM SCM1.TBL1

- 18 -

BLOB_D

--------------------------------------------------------------------------------

--------------------------------

41414141414141414141414141414141414141414141414141414141414141414141414141414141

41414141414141414141414141414141

ROW_ID

バイナリデータとして表示します。

SQL>SELECT ROW_ID FROM SCM1.TBL1

<<1>>

ROW_ID:0000000e-0000000f-00000002-00020000-0000006f-00000000

FLOAT(概数型のデータ型:精度1~23 REAL、24~52 DOUBLE PRECISION)、 REAL(概数型のデータ型:精度23)またはDOUBLE PRECISION(概数型のデータ型:精度52)

SQL>SELECT FLOAT_D,REAL_D,DPRE_D FROM SCM1.TBL1

<<1>>

FLOAT_D:1.000000E+04

REAL_D :1.234568E+09

DPRE_D :1.234568E+09

NULL値

結果データがNULL値だった場合は “(NULL)”を表示します。

SQL>SELECT INT_D,SMALLINT_D FROM SCM1.TBL1

<<1>>

INT_D :1

SMALLINT_D:(NULL)

2.2.7 トランザクション制御

rdbexecsqlコマンドのトランザクション制御は、起動時のcオプションの指定により異なります。

cオプションを指定した場合、通常のアプリケーションと同様にトランザクション制御用のSQL文に従って、トランザクション

は制御されます。

cオプションを省略した場合、データ操作のSQL文の実行が正常終了するごとに、自動的にCOMMIT処理が行われま

す。

クライアント用の動作環境ファイルの実行パラメタ“TRAN_SPEC”について

rdbexecsqlコマンドを実行するときは、クライアント用の動作環境ファイルに“TRAN_SPEC”の指定があっても、クライアン

ト用の動作環境ファイルの指定は無視されます。

トランザクションモードについて

rdbexecsqlコマンドの独立性水準の省略値は、READ UNCOMMITTEDで動作します。SET TRANSACTION文を実行

した場合、SET TRANSACTION文の指定に従います。ただし、動作環境ファイルにDSO_LOCKを指定している場合、

SERIALIZABLEで動作します。 rdbexecsqlコマンドを実行する場合は、クライアント用の動作環境ファイルの

DEFAULT_ISOLATIONで指定した独立性水準の変更は無視されます。

rdbexecsqlコマンドでSQL文を実行して、SQL文がエラーになったとき、そのトランザクションはロールバックされます。

rdbexecsql起動時にcオプションが指定されている場合も指定されていない場合も、SQLエラーとなったトランザクションは

ロールバックされます。cオプションとロールバックの関係は以下のとおりです。

・ cオプションを指定していない場合

SQL文ごとにトランザクションが開始、終了するので、SQLエラー時はそのエラーとなったSQL文のみがロールバック

されます。

- 19 -

・ cオプションを指定している場合

トランザクション制御文(COMMIT文、ROLLBACK文)でトランザクションが制御されます。したがって、SQLエラー時

は、エラーとなったSQL文のトランザクションがロールバックされます。

rdbexecsql起動時にiオプションでSQL文を記載した入力ファイルを指定することができます。この入力ファイルに複数のSQL文が記載される場合、次のように動作します。

入力ファイルに記載されるSQL文は、1行目から 後のSQL文まで順に実行されます。SQL文の実行でエラーとなった場

合は、そのトランザクションはロールバックされ、次のSQL文より新たにトランザクションが開始され実行されます。cオプショ

ンとロールバックの関係は以下のとおりです。

・ cオプションを指定していない場合

SQL文ごとにトランザクションが開始、終了するので、SQLエラー時はそのエラーとなったSQL文のみがロールバック

されます。

・ cオプションを指定している場合

トランザクション制御文(COMMIT文、ROLLBACK文)でトランザクションが制御されます。したがって、SQLエラー時

は、エラーとなったSQL文のトランザクションがロールバックされます。

注意

トランザクション制御文によりトランザクションを終了させないでrdbexecsqlコマンドを終了させた場合、継続していたトラン

ザクションはロールバックされます。

また、rdbexecsqlコマンドでトランザクションが継続中の場合、資源が占有され他のデータベースアクセスアプリケーション

と資源排他が発生し動作に支障をきたす状況が起きるので、トランザクションの扱いには十分注意してください。

参照

トランザクションおよび動作環境ファイルに関する詳細は、“アプリケーション開発ガイド(共通編)”を参照してください。

2.2.8 複数行指定

rdbexecsqlコマンドにおいて、SQL先頭子(EXEC SQL)およびSQL終了子(END-EXEC)を使用することで、プロシジャ

ルーチン定義時の複数行指定が可能です。

“EXEC SQL”から“END-EXEC”までの範囲が、1文として扱われます。

複数行指定を、対話型で使用した例と、INFILE文を利用して入力ファイルに指定した例を以下に示します。

対話型で使用時の指定

$ rdbexecsql -d

SQL>EXEC SQL

2 CREATE PROCEDURE STOCKS.PROC001 ( IN KEY1 INTEGER )

3 BEGIN

4 DECLARE 在庫数量変数 INTEGER

5 SELECT 在庫数量 INTO 在庫数量変数 FROM STOCKS.在庫表

:

10 END

11 END-EXEC

:

INFILEで使用時の指定

入力ファイル(createproc.sql)の作成

-- プロシジャを定義

EXEC SQL

CREATE PROCEDURE STOCKS.PROC001 ( IN KEY1 INTEGER )

COMMENT '在庫不足の製品の発注依頼'

- 20 -

BEGIN

DECLARE 在庫数量変数 INTEGER;

SELECT 在庫数量 INTO 在庫数量変数 FROM STOCKS.在庫表;

END

END-EXEC;

INFILE文の指定

$ rdbexecsql -d

SQL>INFILE /home/user/createproc.sql

EXEC SQL

CREATE PROCEDURE STOCKS.PROC001 ( IN KEY1 INTEGER )

BEGIN

DECLARE 在庫数量変数 INTEGER

SELECT 在庫数量 INTO 在庫数量変数 FROM STOCKS.在庫表

END

END-EXEC

SQL>EXECUTE?(y|n|q)=>

注意

・ SQL先頭子(EXEC SQL)の“EXEC”と“SQL”は同一行に記述する必要があります。

・ SQL先頭子(EXEC SQL)を記述した行にはコメント以外の文字列を記述することはできません。

2.2.9 引数による可変要素の指定

rdbexecsqlコマンドの起動時にiオプションを指定した場合、入力ファイル内に記述するSQL文の一部を可変要素として

定義し、コマンドに引数を指定して、実行時にSQL文を補完することができます。

入力ファイルの記述方法およびコマンドの指定方法は以下のとおりです。

入力ファイルの記述方法

SQL文に、可変要素を“&1”、“&2”、…“&n”の形式で指定します。

“&n”には、コマンドの引数でn番目に指定された値が代入されます。

データベーススペースの作成先ローデバイス名を可変要素“&1”に、スキーマ名を可変要素“&2”に設定する例を以

下に示します。

createdb.sql

-- データベーススペース定義 データベーススペース名は“DBSPACE1”

-- ローデバイス名は1番目の引数

CREATE DBSPACE DBSPACE1 ALLOCATE RAWDEVICE &1;

-- スキーマを定義 スキーマ名は2番目の引数

CREATE SCHEMA &2

-- テーブルを定義

CREATE TABLE 在庫表 ( 製品番号 SMALLINT NOT NULL,

製品名 NATIONAL CHARACTER(10) NOT NULL,

在庫数量 INTEGER,

倉庫番号 SMALLINT,

PRIMARY KEY (製品番号)

)

コマンドの指定方法

ファイル名の後に可変要素に代入する値を引数として指定します。

1番目の引数が、入力ファイル内に“&1”で指定した値を補完、2番目の引数が“&2”で指定した値を補完、n番目の引数

が“&n”で指定した値を補完します。

- 21 -

データベーススペースの作成先ローデバイス名に“/dev/rdsk/c0t1d0s1”に、スキーマ名に“STOCKS”を設定する例を

以下に示します。

$ rdbexecsql -i /home/usr/createdb.sql /dev/rdsk/c0t1d0s1 STOCKS

INFILEコマンドへの指定方法

対話型実行時のINFILEコマンドによるファイル読み込み時にも、ファイル名の後に可変要素に代入する値を引数として

指定できます。

1番目の引数が、入力ファイル内に“&1”で指定した値を補完、2番目の引数が“&2”で指定した値を補完、n番目の引数

が“&n”で指定した値を補完します。

データベーススペースの作成先ローデバイス名に“/dev/rdsk/c0t1d0s1”に、スキーマ名に“STOCKS”を設定する例を

以下に示します。

$ rdbexecsql -d

SQL>INFILE /home/usr/createdb.sql /dev/rdsk/c0t1d0s1 STOCKS

:

注意

可変要素を指定する場合は、“-”で始まる値を引数に指定することはできません。

2.2.10 SQL文でのエラー発生時の対処

データベースの構築時に、rdbexecsqlコマンドにeオプションまたはexオプションを指定することにより、入力したSQL文の

実行中にエラーが発生した場合に処理を中断し、SQL文でエラーが発生したことを表す値を返却します。

これにより、rdbexecsqlコマンドでエラーが発生した場合に、エラー内容によって利用者が処理を切り分けることが可能で

す。

- 22 -

eオプションを指定した場合、SQL文の実行中にエラーが発生すると、エラーの種類に関わらず処理が中断されます。

exオプションを指定した場合、未定義オブジェクトの削除エラー、定義済みオブジェクトの重複定義エラーまたは一意性

制約違反のエラーが発生した場合は正常終了とみなされ、処理は継続されます。このため、データベースを一括して再

定義する場合に、重複定義エラーや未定義エラーを抑止し、次の定義文へ処理を継続させることが可能となります。

以下にrdbexecsqlコマンドにexオプションを指定して、シェルスクリプトを利用してデータベースを構築する例(UNIX系の

場合)を示します。

処理の概要は以下のとおりです。

1. データベースの構築

rdbexecsqlコマンドにiオプションを指定し、データベースの構築用のDDLファイルを読み込ませることにより、デー

タベースの構築を行います。 その際、エラー発生時に備えて、標準出力をテキストファイルに出力しておきます。

データベースの構築では、メモリ不足などのエラーが発生して、データベースの構築を再実行するときに、初期

データが重複して挿入されてしまうことを防ぐために、はじめに格納構造の削除を行います。すべての表にPRIMARYKEYを定義する場合は、初期データの重複は発生しないため、格納構造の削除は必要ありません。

2. データベースの構築の成否判定

rdbexecsqlコマンドの終了ステータスを取得することにより、データベースの構築が成功したか否かを判定します。

3. エラー内容の確認

rdbexecsqlコマンドの標準出力の 終行にエラーメッセージが出力されていますので、エラーの内容を確認しま

す。

4. エラーに対する対処の選択

データベースの構築を中断するか、エラーの原因を取り除いてデータベースの構築を再実行するかを選択しま

す。

- 23 -

5. 不要な資源の削除

データベースの構築を中断する場合、rdbexecsqlコマンドにiオプションを指定し、データベースの削除用のDDLファイルを読み込ませることにより、不要な資源の削除を行います。

データベースを構築するシェルスクリプトの例(bashの場合)

#!/bin/bash

# セットアップ開始

INPUT=Y

while [ "$INPUT" = "Y" ]

do

rdbexecsql -s RDBDB -i /home/user/createdb.dat -ex > dbsetuplog.txt 2>&1

if [ $? -eq 0 ]

then

echo "データベースの作成が完了しました。"

exit

else

echo "データベースの作成でエラーが発生しました。"

echo "再実行する場合は以下のメッセージの対処を実行してからYキーを入力してください。"

echo "データベースの作成を中断する場合はY以外のキーを入力してください。"

# エラーメッセージを表示

echo "エラー内容"

tail -1 dbsetuplog.txt

# ユーザからの入力を読み込み

read INPUT

fi

done

# セットアップの中断

echo "セットアップを中断します。"

echo "データベースを削除します。"

rdbexecsql -s RDBDB -i /home/user/dropdb.dat -ex >> dbsetuplog.txt 2>&1

if [ $? -eq 0 ]

then

echo "データベースの削除が完了しました。"

else

echo "データベースの削除でエラーが発生しました。"

# エラーメッセージを表示

echo "エラー内容"

tail -1 dbsetuplog.txt

# データベースの資源の回収処理

fi

データベースの構築に使用するDDLファイル(createdb.dat)の例

-- データベース名の登録 データベース名は“RDBDB”

CREATE DATABASE RDBDB;

-- データベーススペースの作成 DDLの実行

-- データベーススペース定義 データベーススペース名は“DBSPACE1”

CREATE DBSPACE DBSPACE1 ALLOCATE FILE /home/rdbdps/DBSPACE1 ATTRIBUTE SPACE (100M);

-- 論理構造の定義

-- スキーマを定義 スキーマ名は“STOCKS”

CREATE SCHEMA STOCKS;

-- テーブルを定義

CREATE TABLE STOCKS.在庫表 ( 製品番号 SMALLINT NOT NULL,

- 24 -

製品名 NATIONAL CHARACTER(10) NOT NULL,

在庫数量 INTEGER,

倉庫番号 SMALLINT,

PRIMARY KEY (製品番号)

);

CREATE TABLE STOCKS.アンケート (回答 CHARACTER VARYING(100));

CREATE VIEW STOCKS.大量在庫表(品番,数量)

AS SELECT 製品番号, 在庫数量 FROM STOCKS.在庫表

WHERE 在庫数量 >= 50;

-- 格納構造の定義

CREATE DSO 在庫表DSO

FROM STOCKS.在庫表

TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1));

CREATE DSO アンケートDSO

FROM STOCKS.アンケート

TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1));

-- DSIの定義の削除

DROP DSI 製品番号IXDSI;

DROP DSI 在庫表DSI;

DROP DSI アンケートDSI;

-- DSIのフォーマット指定

CREATE DSI 在庫表DSI

DSO 在庫表DSO

ALLOCATE DATA ON DBSPACE1 SIZE 280K,

FORMAT;

CREATE DSI アンケートDSI

DSO アンケートDSO

ALLOCATE DATA ON DBSPACE1 SIZE 280K,

FORMAT;

-- インデックスのDSO

CREATE DSO 製品番号IXDSO

INDEX ON STOCKS.在庫表 (製品番号)

TYPE BTREE ( PAGESIZE1(16),PAGESIZE2(1), REALIGNMENT) BY ADDRESS;

-- インデックスのDSI

-- DSIのフォーマット指定

CREATE DSI 製品番号IXDSI

INDEX

DSO 製品番号IXDSO

ALLOCATE BASE ON DBSPACE1 SIZE 200K,

INDEX ON DBSPACE1 SIZE 40K,

FORMAT;

-- その他の定義

-- プロシジャを定義

EXEC SQL

CREATE PROCEDURE STOCKS.PROC001 ( IN KEY1 INTEGER )

COMMENT '在庫不足の製品の発注依頼'

BEGIN

DECLARE 在庫数量変数 INTEGER;

SELECT 在庫数量 INTO 在庫数量変数 FROM STOCKS.在庫表;

END

END-EXEC;

-- データベースの創成 DMLの実行

-- データのINSERT

INSERT INTO STOCKS.在庫表 (製品番号,製品名,在庫数量,倉庫番号) VALUES (110,N'テレビ',86,2);

INSERT INTO STOCKS.在庫表 (製品番号,製品名,在庫数量,倉庫番号) VALUES (112,N'ビデオ',95,3);

- 25 -

INSERT INTO STOCKS.アンケート (回答) VALUES('回答のサンプルです');

データベースの削除に使用するDDLファイル(dropdb.dat)の例

-- その他の定義の削除

-- プロシジャを削除

DROP PROCEDURE STOCKS.PROC001;

-- 格納構造の定義の削除

DROP DSI 製品番号IXDSI;

DROP DSO 製品番号IXDSO;

DROP DSI アンケートDSI;

DROP DSI 在庫表DSI;

DROP DSO アンケートDSO;

DROP DSO 在庫表DSO;

-- テーブルを定義の削除

DROP VIEW STOCKS.大量在庫表;

DROP TABLE STOCKS.アンケート;

DROP TABLE STOCKS.在庫表;

-- スキーマを定義の削除 スキーマ名は"STOCKS"

DROP SCHEMA STOCKS;

-- データベーススペース定義の削除 データベーススペース名は"DBSPACE1"

DROP DBSPACE DBSPACE1;

-- データベースの削除 データベース名は"RDBDB"

CONNECT TO 'RDBII_DICTIONARY';

DROP DATABASE RDBDB;

2.2.11 rdbexecsqlコマンドの排他について

アプリケーションおよびRDBコマンド間の排他の関係において、rdbexecsqlコマンドの排他は、アプリケーションと同等に

扱われます。アプリケーションおよびRDBコマンド間の排他とは、データベースの同一資源に対して、アプリケーションおよび

RDBコマンドが同時に動作した場合に、それぞれの処理を矛盾なく実行するために、Symfoware/RDBが制御する処理

をいいます。

参照

アプリケーションの排他の詳細は、“アプリケーション開発ガイド(共通編)”を参照してください。

2.2.12 出力メッセージと対処

rdbexecsqlコマンドの出力メッセージと対処方法について説明します。

出力メッセージ

rdbexecsqlコマンドでは、以下のメッセージが出力されます。

・ 正常終了時に出力するメッセージ

・ rdbexecsqlコマンドによる起動時のエラーメッセージ

・ SQL文実行時のエラーメッセージ

- 26 -

正常終了時に出力するメッセージ

SQL文実行時に出力されるメッセージ

JYP2083I SQL文によって処理を行った行数が0です.

JYP2001I 正常に終了しました.

rdbexecsqlコマンドによる起動時のエラーメッセージ

例1

不当オプションを指定した場合に出力されるエラーメッセージ

$ rdbexecsql -i

rdb: ERROR: qdg02208u:-iオプションの引数が正しく記述されていません

(システム名=rdbsys1)

rdb: ERROR: qdg02201u:rdbexecsqlが異常終了しました 復帰コード 01 (

システム名=rdbsys1)

$

例2

Symfoware/RDBが未起動の場合に出力されるエラーメッセージ

$ rdbexecsql -s USER_DB

rdb: ERROR: qdg13147u:rdbexecsqlコマンドの実行中にエラーを検出しま

した 詳細メッセージ='JYP5031E RDBIIシステムが未起動です.' (システ

ム名=rdbsys1)

$ rdbexecsql

rdb: ERROR: qdg02201u:rdbexecsqlが異常終了しました 復帰コード 01 (

システム名=rdbsys1)

SQL文実行時のエラーメッセージ

例1

SQL文実行時にサーバからエラーが返却された場合のエラーメッセージ

$ rdbexecsql -s USER_DB

SQL>SELECT * FROM SCM2.TBL1

rdb: ERROR: qdg13063u:rdbexecsqlコマンドが発行するSQL文でエラーが

発生しました SQL文=PREPARE SQLSTATE=37000 SQLMSG=JYP7201E スキーマ

“SCM2”が存在しません. (システム名=rdbsys1)

SQL>

例2

SQL文で文法エラーが発生した場合のエラーメッセージ

$ rdbexecsql -s USER_DB

SQL>SELECT * SCM1.TBL1

rdb: ERROR: qdg13063u:rdbexecsqlコマンドが発行するSQL文でエラーが

発生しました SQL文=PREPARE SQLSTATE=37000 SQLMSG=JYP8399E “TBL1

の前後にキーワード“FROM”が指定されていません. (システム名=rdbs

ys1)

SQL>

例3

rdbexecsqlコマンド内でメモリ不足が発生した場合のエラーメッセージ

SQL>SELECT * FROM SCM1.TBL1

rdb: ERROR: qdg02882u:メモリ不足が発生しました (システム名=rdbsys1)

- 27 -

rdb: ERROR: qdg02201u:rdbexecsqlが異常終了しました 復帰コード 01 (

システム名=rdbsys1)

メッセージの対処

参照

Solaris/Linuxの場合

rdbexecsqlコマンドで出力するメッセージに対する利用者の対処は、“メッセージ集”、またはrdbprtmsgコマンドで参照す

ることができます。

Windowsの場合

rdbexecsqlコマンドで出力するメッセージに対する利用者の対処は、 “メッセージ集”で参照することができます。

rdbexecsqlコマンドの実行時のエラーメッセージの対処

rdbexecsqlコマンドの実行で出力されるメッセージ“qdg02208u”の説明を表示します。

$ rdbprtmsg -qdg 02208

qdg02208u

-s*オプションの引数が正しく記述されていません t*

[メッセージの意味]

オプションの引数が正しく記述されていません。

[パラメタの意味]

s*: オプション

t*: RDBシステム名

RDBシステム名はマルチRDBの場合のみ出力されます。

[システムの処理]

このコマンドの処理を中止します。

[利用者の処置]

オプションに対する引数を正しく指定して、再実行してください。

SQL文実行時のエラーメッセージの対処

SQL文の実行で出力されるメッセージ“JYP7201E”の説明を表示します。

$ rdbprtmsg -jyp 7201

JYP7201E

スキーマ“@1@”が存在しません.

[状態コード]

37000

[メッセージの意味]

スキーマ“@1@”が存在しません。

例: SELECT C11 FROM SCM1.T1

注) スキーマ名SCM1は利用環境中に存在しないとします。

[パラメタの意味]

@1@: スキーマ名

[システムの処理]

この文の処理を中止します。

[利用者の処置]

存在するスキーマを指定してください。

2.2.13 処理を中断する場合

SQL実行中にrdbexecsqlコマンドを強制停止する方法には、以下があります。

- 28 -

rdbexecsqlコマンド処理中に[Ctrl]+[C]を押す

rdbexecsqlコマンド実行中に標準入力よりコマンドプロセスに対して[Ctrl]+[C]を押します。(rdbexecsqlコマンドプロセスに

対してシグナルが発行されます。)

シグナル受け付け後、トランザクションはロールバックされ、コネクションが切断されてrdbexecsqlコマンドが終了します。

2.3 アプリケーションからの利用

アプリケーション全体で、データベースへのアクセスや性能に問題がないかを確認する場合は、アプリケーションを実行

し、以下の情報を取得します。

・ アクセスプラン

・ 性能情報

アプリケーションを実行して、アクセスプランまたは性能情報を取得するには、クライアント用の動作環境ファイルに以下

のパラメタを指定してください。

・ ACCESS_PLAN

・ SQL_TRACE

実行パラメタの詳細については、“4.2.2 アプリケーションからアクセスプランを取得する”および“4.3.3 アプリケーションから

SQL性能情報を取得する”を参照してください。

- 29 -

第3章 アプリケーション開発を支援する

本章では、Symfoware/SQLTOOLで、アプリケーション開発を支援する機能について説明します。アプリケーション開発

を支援する機能には以下の2つがあります。

・ データベースを構築する

・ データベースを操作する

3.1 データベースを構築する

Symfoware/SQLTOOLでは、データベース構築のためのSQL文をrdbexecsqlコマンドで実行できます。

データベースの構築は、以下の手順で実施します。

以下にファイル指定でデータベースを構築する場合の例を示します。

データベース構築に使用する入力ファイルの内容

-- データベース名の登録 データベース名は“RDBDB”

CREATE DATABASE RDBDB;

-- データベーススペースの作成 DDLの実行

-- データベーススペース定義 データベーススペース名は“DBSPACE1”

CREATE DBSPACE DBSPACE1 ALLOCATE FILE /RDB2/DBS01 ATTRIBUTE SPACE(2M);

-- 論理構造の定義

-- スキーマを定義 スキーマ名は“STOCKS”

CREATE SCHEMA STOCKS;

-- テーブルを定義

CREATE TABLE STOCKS.在庫表 ( 製品番号 SMALLINT NOT NULL,

製品名 NATIONAL CHARACTER(10) NOT NULL,

在庫数量 INTEGER,

- 30 -

倉庫番号 SMALLINT,

PRIMARY KEY (製品番号)

);

CREATE VIEW STOCKS.大量在庫表(品番,数量)

AS SELECT 製品番号, 在庫数量 FROM STOCKS.在庫表

WHERE 在庫数量 >= 50;

-- 格納構造の定義

-- 在庫表のDSO

CREATE DSO 在庫表DSO

FROM STOCKS.在庫表

TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1));

-- 在庫表のDSI

-- DSIのフォーマット指定

CREATE DSI 在庫表DSI

DSO 在庫表DSO

ALLOCATE DATA ON DBSPACE1 SIZE 280K,

FORMAT;

-- インデックスのDSO

CREATE DSO 製品番号IXDSO

INDEX ON STOCKS.在庫表 (製品番号)

TYPE BTREE ( PAGESIZE1(16),PAGESIZE2(1), REALIGNMENT) BY ADDRESS;

-- インデックスのDSI

-- DSIのフォーマット指定

CREATE DSI 製品番号IXDSI

INDEX

DSO 製品番号IXDSO

ALLOCATE BASE ON DBSPACE1 SIZE 200K,

INDEX ON DBSPACE1 SIZE 40K,

FORMAT;

-- その他の定義

-- プロシジャを定義

EXEC SQL

CREATE PROCEDURE STOCKS.PROC001 ( IN KEY1 INTEGER )

COMMENT '在庫不足の製品の発注依頼'

BEGIN

DECLARE 在庫数量変数 INTEGER;

SELECT 在庫数量 INTO 在庫数量変数 FROM STOCKS.在庫表;

:

END

END-EXEC;

-- データベースの創成 DMLの実行

-- データのINSERT

INSERT INTO STOCKS.在庫表 (製品番号,製品名,在庫数量,倉庫番号)

VALUES (110,N'テレビ',86,2);

INSERT INTO STOCKS.在庫表 (製品番号,製品名,在庫数量,倉庫番号)

VALUES (112,N'ビデオ',95,3);

rdbexecsqlコマンドの指定例

$ rdbexecsql -s RDBDB -i /home/user/createdb.dat

3.2 データベースを操作する

Symfoware/SQLTOOLでは、データベース操作のためのSQL文をrdbexecsqlコマンドで実行できます。

SQL文の設計時に、このコマンドを使ってSQL文を1行ずつ実行することにより、SQL文の実行検証を行うことができま

す。これにより、アプリケーション開発時にSQL文の記述を何度も修正し、そのたびにコンパイル、リンク、実行を繰り返す

必要がなくなり、効率的なアプリケーション開発を支援します。

- 31 -

以下に、rdbexecsqlコマンドを利用したSQL文の実行検証例を示します。

格納されているデータの確認を行う

例1

格納されているデータ数について調べ、対話的に結果を確認する

$ rdbexecsql -s USER_DB -mo

SQL>SELECT COUNT(*) FROM SCM1.TBL1

1

----

100

Number of records:1

例2

格納されているデータの内容をファイル(/tmp/out_data)に出力する(1)

$ rdbexecsql -s USER_DB -o /tmp/out_data -mo

SQL>PRINT OFF

SQL>SELECT * FROM SCM1.TBL1

Number of records:3

[ファイル(/tmp/out_data)の出力結果]

SELECT * FROM SCM1.TBL1

INT_D SMALLINT_D CHAR_D

----- ---------- ----------

1 1 あいうえお

2 1 あいうえお

3 1 あいうえお

Number of records:3

例3

格納されているデータの内容をファイル(/tmp/out_data)に出力する(2)

$ rdbexecsql -s USER_DB -mo

SQL>PRINT OFF

SQL>LOG ON /tmp/out_data

SQL>SELECT * FROM SCM1.TBL1

Number of records:3

SQL>LOG OFF

[ファイル(/tmp/out_data)の出力結果]

SELECT * FROM SCM1.TBL1

INT_D SMALLINT_D CHAR_D

----- ---------- ----------

1 1 あいうえお

2 1 あいうえお

3 1 あいうえお

Number of records:3

例4

出力するデータの長さを指定する

CHARデータ、NCHARデータおよびBLOBデータの出力データ長を変更して出力します。(CHAR/VCHAR,NCHAR/NVCHARは先頭より10バイト、BLOBは先頭より64バイト)

$ rdbexecsql -s USER_DB -o /tmp/out_data -mo

SQL>PRINT OFF

SQL>COLUMN FORMAT CHARMAX 10

SQL>COLUMN FORMAT NCHARMAX 10

- 32 -

SQL>COLUMN FORMAT BLOBMAX 64

SQL>SELECT * FROM SCM1.TBL1

Number of records:1

[ファイル(/tmp/out_data)の出力結果]

SELECT * FROM SCM1.TBL1

INT_D SMALLINT_D CHAR_D BLOB_D

----- ---------- ---------- --------------------------------------------------・・・

1 1 あいうえお 41414141414141414141414141414141414141414141414141・・・

Number of records:1

SQL文の動作確認を行う

例1

作成したSQL文の動作確認を行った後に実行履歴表示機能を利用して性能情報を取得する

SQL性能情報出力例の詳細については、“4.3.6 SQL性能情報の出力形式”を参照してください。

$ rdbexecsql -mo

SQL>PRINT OFF

SQL>SELECT * FROM SCM1.TBL1

Number of records:20

SQL>SQL TRACE ON /tmp/trace.log

SQL>!SEL

SELECT * FROM SCM1.TBL1

Number of records:20

例2

作成したSQL文の実行を行う(ファイル入力)

$ rdbexecsql -mo

SQL>INFILE /tmp/sqlfile.txt

SQL>DELETE FROM SCM1.TBL1 WHERE INT_D = 1

EXECUTE?(y|n|q)=>y

Number of records:20

SQL>SELECT * FROM SCM1.TBL1

EXECUTE?(y|n|q)=>q

SQL>

SQL文の実行結果を画面表示する

出力結果行を5行とし、実行結果を表形式で出力する

$ rdbexecsql -mo

SQL>PRINT RECORDMAX 5

SQL>SELECT INT_D FROM SCM1.TBL1

INT_D

------

100

200

300

400

500

Number of records:20

- 33 -

第4章 データベースをチューニングする

本章では、Symfoware/SQLTOOLで、データベースをチューニングする方法について説明します。

4.1 データベースのチューニング作業

アクセスプランを参照することにより、Symfoware/RDBがどのようにデータベースにアクセスしているかを知ることができま

す。また、アクセスモデルから、Symfoware/RDBが持つアクセスシーケンスと特性を知ることができます。これにより、アプ

リケーションの開発者は、データベースの設計どおりにSQL文が動作しているかどうかを検証することができます。データ

ベースの設計どおりにSQL文が動作していない場合は、データベースやSQL文のチューニングを行うことが必要となりま

す。

データベースのチューニングは、以下の作業のときに行います。

・ データベース構築時

・ アプリケーション開発時

・ 性能検証チューニング時

・ 業務への機能追加時

業務を開始する前に適切なデータベースアクセスチューニングを実施しておけば、業務開始後に発生する性能トラブル

を未然に防ぐことができます。適切にチューニングされたデータベースは、業務開始後にデータ量の増減があっても、

適化情報の更新(rdbupsコマンド)を実施する必要がなくなります。

4.1.1 データベース構築時

データベースの設計およびインデックスの設計後に、 適化情報を設定します。次にSQL文を実行して、アクセスプラン

を取得し、データベースのチューニングを行います。

4.1.2 アプリケーション開発時

作成したアプリケーションのSQL文のコンパイルおよび実行を確認し、エラーを修正します。また、データベースの設計

どおりにSQL文が動作することを確認し、必要に応じて、データベースをチューニングします。

- 34 -

4.1.3 性能検証チューニング時

データベースの構築後、疑似的にデータ情報をデータベースに格納し、性能検証のテストおよびチューニングを行いま

す。SQL_SNAP、ROUTINE_SNAPまたはパフォーマンスモニタにより、性能の良くないSQL文を特定します。そのSQL文を

rdbexecsqlコマンドで実行して、アクセスプランおよびSQL性能情報を取得し、SQL文やデータベースのチューニングを

行います。

- 35 -

4.1.4 業務への機能追加時

運用中のデータベースに、新しい機能を追加する場合は、テスト環境を用意し、そのテスト環境でSQL文のチューニング

を行います。

4.2 アクセスプランを取得する

アクセスプランの取得方法には、以下の2つがあります。

・ rdbexecsqlコマンドを使用して取得する

・ アプリケーションから取得する

rdbexecsqlコマンドを使用してアクセスプランを取得するには、以下の制御文があります。

・ ACCESS PLAN文(アクセスプランの取得機能)

ACCESS PLAN文では、データベースアクセスのチューニングを可能にするための情報をSQL文単位に取得するための

指定ができます。

- 36 -

4.2.1 rdbexecsqlコマンドを使用してアクセスプランを取得する

任意のSQL文のアクセスプランを取得したい場合に、rdbexecsqlコマンドを使用します。

例1

アクセスプランの取得を開始する

$ rdbexecsql -s USER_DB

SQL>ACCESS PLAN ON /tmp/plan, 1, EXE

SQL>SELECT * FROM SCM1.TBL1 WHERE INT_D = 1

~データ表示~

取得するアクセスプランの内容については、“4.2.3 アクセスプランの取得内容”を参照してください。

例2

アクセスプランの取得を終了する

SQL>ACCESS PLAN OFF

注意

ACCESS PLAN文ではトランザクションは開始されません。

ACCESS PLAN文の詳細については、“5.2 ACCESS PLAN文”を参照してください。

4.2.2 アプリケーションからアクセスプランを取得する

アプリケーションを実行して、アプリケーション単位にアクセスプランを取得するには、クライアント用の動作環境ファイル

に以下の実行パラメタを指定してください。

ACCESS_PLAN

【指定形式】

ACCESS_PLAN = ({ON | OFF},ファイル名[,[出力レベル][,[SQLアドバイザ出力レベル]]])

【実行パラメタの意味】

アプリケーション単位でアクセスプランを取得するかどうかを指定します。省略した場合は、“OFF”が指定されたもの

とみなします。

【パラメタの意味】

ON:

アクセスプラン取得機能を利用する場合に指定します。

OFF:

アクセスプラン取得機能を利用しない場合に指定します。

ファイル名:

出力先のサーバ側のファイル名を、絶対パスで指定します。指定されたファイルがすでに存在する場合は、情報

を追加して出力します。

また、指定するパスが存在することと、CONNECT文で指定したユーザIDに対する書込み権があることを確認して

ください。

出力レベル:

出力レベルには1または2を指定します。1を指定すると、アクセスプランのセクション情報のみを出力します。2を指定すると、セクション内の各エレメント詳細情報も出力します。省略した場合は、2が指定されたものとみなしま

す。

- 37 -

SQLアドバイザ出力レベル:

SQLアドバイザ出力レベルには、“ADVICE”または“NOADVICE”を指定します。“ADVICE”を指定すると、SQL文に対するアドバイスを出力します。“NOADVICE”を指定すると、SQL文に対するアドバイスを出力しません。省

略した場合は、“ADVICE”が指定されたものとみなします。

4.2.3 アクセスプランの取得内容

アクセスプランでは、以下の情報を取得します。

・ SQL文

・ Symfoware/RDBが 適化したSQL文

・ アドバイス

・ アクセスシーケンス

・ 実行動作環境

SQL文

アプリケーションで指定したアクセスプラン取得対象のSQL文を、以下の形式で表示します。

・ 英小文字は英大文字で表示する

・ SQL文の前後の空白は削除して表示する

・ SQL文中の冗長な空白は削除して表示する

Symfoware/RDBが最適化したSQL文

Symfoware/RDBが、ビュー表を指定したSQL文を実表を指定したSQL文に変換したり、副問合せを指定したSQL文を

ジョインのSQL文に変換したりします。この 適化後のSQL文の概略を出力します。SQL文中の定数や変数は“?”で表

現します。

アドバイス

以下の情報があれば、アドバイスとして表示します。アドバイスがなければ、見出し“Advice to an SQL statement:”とアド

バイスは出力しません。

・ SQL文に対するアドバイス

・ 無効なASSIST指定に対するメッセージ

ASSIST指定のメッセージが出力された場合、以下の状態になるまでチューニングしてください。

・ ASSIST指定が有効になる

・ 意図したアクセスプランになる

アクセスシーケンス

データベースのアクセスシーケンスを出力します。アクセスシーケンスは、セクション情報とセクション内のエレメント情報

から表現します。

実行動作環境

トランザクションモード、独立性水準および 適化パラメタなどの動作環境を出力します。

アクセスプランの取得内容

ACCESS PLAN文や動作環境ファイルの実行パラメタ“ACCESS_PLAN”に指定した出力レベル、SQLアドバイザ出

力レベルにより、以下の情報がアクセスプランとして出力されます。

出力される内容 レベル1 レベル2 ADVICE

対象SQL文 ○ ○ ×

- 38 -

出力される内容 レベル1 レベル2 ADVICE

適化したSQL文 × ○ ×

対象SQL文に対するアドバイス ○ ○ ○

セクション情報 ○ ○ ×

エレメント詳細情報 × ○ ×

実行環境情報 × ○ ×

4.2.4 アクセスプランの出力形式

アクセスプランは、以下の形式で出力します。

データベースの検索処理は、データベース資源からデータを読み出し、条件の判定やデータの加工を施し、中間結果

としてソートテーブルやワークテーブルにデータを出力するという一連の処理を繰り返すことにより、目的の検索結果を

求めます。アクセスプランは、このセクションごとの情報を出力します。

- 39 -

アクセスプランでは、以下の情報を出力します。

・ セクション情報

・ エレメント情報

・ SCANエレメントの詳細情報

・ JOINエレメント(MERGE JOIN、FETCH JOINおよびNESTED LOOP JOIN)の詳細情報

・ INSERTエレメントの詳細情報

・ DELETEエレメントの詳細情報

・ UPDATEエレメントの詳細情報

・ OUTPUTエレメントの詳細情報

・ GROUPINGエレメントの詳細情報

・ TRIGGER EXECUTIONエレメントの詳細情報

・ 動作環境

どこかのセクションで副問合せを判定する場合に、そのセクションのエレメント情報中の“subquery evaluation”で表示した

副番号(副問合せの処理番号)に対応するように、副問合せの処理単位群を表示します。副問合せの副番号は、次の概

念図のように表示します。

- 40 -

上図では、Main queryの1番目のセクションに副問合せが2つあるので、副番号は、それぞれ1-1(1番目のセクションの1番目の副問合せ)、1-2(1番目のセクションの2番目の副問合せ)と表現します。

Main queryの2番目のセクションに副問合せがある場合は、副番号は、2-1、2-2となります。

1-2の副問合せから、さらに副問合せがある場合は、1-2の副問合せの1番目のセクションの1番目の副問合せであるた

め、その副番号は、1-2.1-1のように表現します。

セクション情報

セクション情報は、そのセクションで実行する各エレメントのサマリ情報を出力します。

- 41 -

[1] セクションの番号

アクセスプラン上のMain queryまたは各Sub queryごとのセクション番号です。

[2] セクション名

そのセクションで処理する代表的なエレメント名を表示します。

セクション名 意味

SCAN表、インデックス、ソートテーブルおよびワークテーブルから

データを取り出す。

M-JOIN マージジョインを行う。

F-JOIN フェッチジョインを行う。

N-JOIN ネスティドループジョインを行う。

GROUP 検索結果をグループ化する。

UPDATE表およびインデックスに対して、レコードの挿入、データの更

新およびレコードの削除を行う。

[3] 入力資源名1

データの入力となる資源名を表示します。データベース資源の場合は、DSO名を先頭から18バイトの範囲で表示し

ます。中間結果(ソートテーブルまたはワークテーブル)を入力する場合は、SORT0001やWORK0001のように

Symfoware/RDB内部で使用する番号付きの仮想作業域名で表示します。

[4] 入力資源名2

インデックスと表を同時に検索するなど、1つのセクションで複数のデータ資源を入力する場合に、入力資源名を表

示します。1つしか資源を入力しない場合は、何も表示しません。

[5] 出力資源名

出力先の資源名を表示します。出力先がない場合(副問合せの 終セクション)は、何も表示しません。

出力資源名 意味

SORTxxxx 出力するソートテーブル名

WORKxxxx 出力するワークテーブル名

APPL 検索結果をアプリケーションに返却する

表DSO名データベースを更新(INS/DEL/UPD)する場合の表のDSO名

1つのセクションに複数の処理内容がある場合は、複数行で表示することがあります。また、ジョインを行うときは、ジョ

インする表の数に応じて複数行で表示します。

例1

表を読み込みながら更新対象行を見つけて、その行を更新する。

=sno===sectname=====input1==============input2==============output/update======

1 : SCAN [TBL1_BASE_DSO ][ ][ ]

UPDATE [ ][ ][TBL1_BASE_DSO ]

- 42 -

例2

表を読み込みながらグループ化する。

=sno===sectname=====input1==============input2==============output/update======

1 : SCAN [TBL1_BASE_DSO ][ ][ ]

GROUP [ ][ ][APPL ]

例3

TBL1とTBL2をフェッチジョインする。

=sno===sectname=====input1==============input2==============output/update======

1 : F-JOIN [TBL1_BASE_DSO ][ ][ ]

[TBL2_IX1_DSO ][TBL2_BASE_DSO ][APPL ]

エレメント情報

[1] エレメント番号

当該セクション内でのエレメントの番号を表示します。

[2] エレメント名

エレメント名を表示します。エレメント名には以下のものがあります。

エレメント名 意味

SCAN表、インデックス、ソートテーブルまたはワークテーブ

ルからデータを取り出す

MERGE JOIN マージジョインを行う

FETCH JOIN フェッチジョインを行う

NESTED LOOP JOIN ネスティドループジョインを行う

INSERT表、インデックス、ソートテーブルまたはワークテーブ

ルにレコードを挿入する

DELETE 表およびインデックスからレコードを削除する

UPDATE 表およびインデックスのデータを更新する

OUTPUT 問合せの結果をアプリケーションに返却する

GROUPING 複数のレコードをグループ化する

TRIGGEREXECUTION

トリガを実行する

各エレメントの詳細情報について説明します。

SCANエレメントの詳細情報

詳細情報 意味

table nameアクセス対象の表名、ソートテーブル名、ワークテーブル名

ソートテーブル名、ワークテーブル名は以下の形式で表示す

る。

- 43 -

詳細情報 意味

ソートテーブル名 : SORT0001,SORT0002,‥ ワークテーブル名 : WORK0001,WORK0002,‥

dsi access

DSIの読込み情報

ALL DSI :全DSIにアクセスする

ONE DSI :1つのDSIにアクセスする

SELECTED DSI :探索条件や動作環境ファイルでアクセス

するDSIが絞られている (注1)

scan type

読込みのアクセス方式

TABLE KEY SCAN :表をキー値で検索

TABLE ALL SCAN :表の全件を順検索

TABLE PARALLEL SCAN :表の全件を並列に検索

INDEX KEY SCAN(n) :インデックスをキー範囲で検索(注2) INDEX ALL SCAN :インデックスの全件を順検索

INDEX TABLE SCAN(n) :インデックスをキー範囲検索しな

がら表のレコードも取り出す(注2)

dso name

アクセス対象のDSO名

DSO名の後方に、そのDSO資源をアクセスするときの占有単

位および占有モードを表示する。

占有単位

DSI : DSIの単位

PAGE : ページ単位

REC : レコード単位

NONE : 占有しない

占有モード

SH : 共用モード

EX : 非共用モード

NONE : 占有しない

conditionevaluation

条件の判定

Yes : 条件を判定する

No : 条件を判定しない

subqueryevaluation

副問合せを判定する場合の副問合せの副番号

stop keyevaluation

検索処理を止める場合の条件や句の詳細

ROWNUM : ROWNUMの条件を判定して検索処理を止め

LIMIT : 大件数指定LIMITを判定して検索処理を止める

scan recordnumber

アクセス対象が、表またはインデックスの場合に、1DSI当たり

の読み込むレコード件数の見積り値

注1) DSI分割を行っていない場合はこの情報は出力しません。

注2) (n)はインデックス検索に使用した列数を表します。

例1

表の全件検索(並列スキャン)の場合

[ 1] SCAN ELEMENT

table name SCM1.TBL1

dsi access ALL DSI

- 44 -

scan type TABLE PARALLEL SCAN

dso name TBL1_BASE_DSO [DSI/SH]

condition evaluation Yes

scan record number 25000

例2

インデックスの検索の場合

[ 1] SCAN ELEMENT

table name SCM1.TBL1

scan type INDEX KEY SCAN(1)

dso name TBL1_IX1_DSO [PAGE/SH]

condition evaluation No

scan record number 250

例3

インデックスと表を同時に検索する場合

[ 1] SCAN ELEMENT

table name SCM1.TBL1

scan type INDEX TABLE SCAN(2)

dso name TBL1_IX1_DSO [PAGE/SH]

TBL1_BASE_DSO [PAGE/SH]

condition evaluation Yes

subquery evaluation -->2-1

scan record number 50

例4

インデックスと表を同時に検索しながら、ROWNUMの条件を判定して検索処理を止める場合

[ 1] SCAN ELEMENT

table name SCM1.TBL1

scan type INDEX TABLE SCAN(2)

dso name TBL1_IX1_DSO [PAGE/SH]

TBL1_BASE_DSO [PAGE/SH]

condition evaluation Yes

stop key evaluation ROWNUM

scan record number 50

例5

インデックスと表を同時に検索しながら、 大件数指定LIMITを判定して検索処理を止める場合

[ 1] SCAN ELEMENT

table name SCM1.TBL1

scan type INDEX TABLE SCAN(2)

dso name TBL1_IX1_DSO [PAGE/SH]

TBL1_BASE_DSO [PAGE/SH]

condition evaluation Yes

stop key evaluation LIMIT

scan record number 50

例6

ソートテーブルからTIDを取り出し、表を検索する場合

[ 1] SCAN ELEMENT

table name SORT0001

scan type TABLE ALL SCAN

- 45 -

condition evaluation No

[ 2] SCAN ELEMENT

table name SCM1.TBL1

scan type TABLE KEY SCAN

dso name TBL1_BASE_DSO [PAGE/SH]

condition evaluation No

scan record number 1

参考

- ソートテーブルからTIDを取り出して表を検索するときに読み込むレコード件数の見積り値は、1件と表現します。

表からデータを取り出すSCANエレメントは、ソートテーブルに格納されているレコード件数分のSCANを繰り返し

ます。

- “stop key evaluation”によって検索処理を止めますが、読み込むレコード件数の見積り値は、検索処理を止めな

い場合と同じ値になります。

JOINエレメント(MERGE JOIN、FETCH JOINおよびNESTED LOOP JOIN)の詳細情報

詳細情報 意味

n) table name

ジョイン対象の表名、ソートテーブル名またはワークテーブル

名ソートテーブル名、ワークテーブル名は以下の形式で表示

する。

ソートテーブル名 : SORT0001、SORT0002、‥ ワークテーブル名 : WORK0001、WORK0002、‥なお、表名の前の“n)”は結合する表の順番を意味する。

dsi access

DSIの読み込み情報

ALL DSI :全DSIにアクセスする

ONE DSI :1つのDSIにアクセスする

SELECTED DSI :探索条件や動作環境ファイルでアクセスする

DSIが絞られている (注1)

scan type

読込みのアクセス方式

TABLE KEY SCAN :表をキー値で検索

TABLE ALL SCAN :表の全件を順検索

TABLE PARALLEL SCAN :表の全件を並列に検索

INDEX KEY SCAN(n) :インデックスをキー範囲で検索(注2) INDEX ALL SCAN :インデックスの全件を順検索

INDEX TABLE SCAN(n) :インデックスをキー範囲検索しな

がら表のレコードも取り出す(注2)

dso name

アクセス対象のDSO名

また、DSO名の後方に、そのDSO資源をアクセスするときの占

有単位および占有モードを表示する。

占有単位

DSI : DSIの単位

PAGE : ページ単位

REC : レコード単位

NONE : 占有しない

占有モード

SH : 共用モード

EX : 非共用モード

NONE : 占有しない

join keycolumn

MERGE JOIN時にジョインで使用した列数

conditionevaluation

条件の判定 Yes : 条件を判定する No : 条件を判定しない

- 46 -

詳細情報 意味

subqueryevaluation

副問合せを判定する場合の副問合せの副番号

stop keyevaluation

検索処理を止める場合の条件や句の詳細

ROWNUM : ROWNUMの条件を判定して検索処理を止め

LIMIT : 大件数指定LIMITを判定して検索処理を止める

scan recordnumber

アクセス対象が、表またはインデックスの場合に、1DSI当たりの

読み込むレコード件数の見積り値

注1) DSI分割を行っていない場合はこの情報は出力しません。

注2) (n)はインデックス検索に使用した列数を表します。

例1

MERGE JOINの詳細情報

[ 1] MERGE JOIN ELEMENT

1) table name SCM1.TBL1

scan type INDEX ALL SCAN

dso name TBL1_IX1_DSO [DSI/SH]

join key column 2

condition evaluation No

scan record number 2500

2) table name SORT0001

scan type TABLE ALL SCAN

join key column 2

condition evaluation Yes

例2

FETCH JOINの詳細情報

[ 1] FETCH JOIN ELEMENT

1) table name SCM1.TBL1

dsi access SELECTED DSI

scan type INDEX KEY SCAN(3)

dso name TBL1_IX1_DSO [PAGE/SH]

condition evaluation Yes

scan record number 20

2) table name SCM1.TBL2

dsi access ONE DSI

scan type INDEX TABLE SCAN(2)

dso name TBL2_IX1_DSO [PAGE/SH]

TBL2_BASE_DSO [PAGE/SH]

condition evaluation Yes

scan record number 10

例3

FETCH JOINの詳細情報(ROWNUMの条件を判定して検索処理を止める場合)

[ 1] FETCH JOIN ELEMENT

1) table name SCM1.TBL1

dsi access SELECTED DSI

scan type INDEX KEY SCAN(3)

dso name TBL1_IX1_DSO [PAGE/SH]

condition evaluation Yes

- 47 -

scan record number 20

2) table name SCM1.TBL2

dsi access ONE DSI

scan type INDEX TABLE SCAN(2)

dso name TBL2_IX1_DSO [PAGE/SH]

TBL2_BASE_DSO [PAGE/SH]

condition evaluation Yes

stop key evaluation ROWNUM

scan record number 10

例4

FETCH JOINの詳細情報( 大件数指定LIMITを判定して検索処理を止める場合)

[ 1] FETCH JOIN ELEMENT

1) table name SCM1.TBL1

dsi access SELECTED DSI

scan type INDEX KEY SCAN(3)

dso name TBL1_IX1_DSO [PAGE/SH]

condition evaluation Yes

scan record number 20

2) table name SCM1.TBL2

dsi access ONE DSI

scan type INDEX TABLE SCAN(2)

dso name TBL2_IX1_DSO [PAGE/SH]

TBL2_BASE_DSO [PAGE/SH]

condition evaluation Yes

stop key evaluation LIMIT

scan record number 10

例5

NESTED LOOP JOINの詳細情報

[ 1] NESTED LOOP JOIN ELEMENT

1) table name WORK0001

scan type TABLE ALL SCAN

condition evaluation No

2) table name SCM1.TBL2

scan type TABLE ALL SCAN

dso name TBL2_BASE_DSO [DSI/SH]

condition evaluation Yes

subquery evaluation -->2-1

scan record number 2000

参考

- フェッチジョインおよびネスティドループジョインの2番目の表の読み込むレコード件数の見積りは、1番目の表の1レコードに結合する1DSI当たりのレコード数を表現します。

- “stop key evaluation”によって検索処理を止めますが、読み込むレコード件数の見積り値は、検索を止めない場

合と同じ値になります。

INSERTエレメントの詳細情報

詳細情報 意味

table name挿入対象の表名、ソートテーブル名またはワークテーブル

dso nameレコード挿入対象のDSO名一覧

DSO名の後方に、そのDSO資源をアクセスするときの占有

- 48 -

詳細情報 意味

単位および占有モードを表示する。

占有単位

DSI : DSIの単位

PAGE : ページ単位

REC : レコード単位

占有モード

EX : 非共用モード

insert recordlength

挿入対象がソートテーブルまたはワークテーブルの場合、

ソートテーブルまたはワークテーブルに出力するレコード

長を表示する。(単位はバイト)

例1

データベースへのINSERTの場合

[ 1] INSERT ELEMENT

table name SCM1.TBL1

dso name TBL1_BASE_DSO [REC/EX]

TBL1_IX1_DSO [REC/EX]

例2

ソートテーブルへのINSERTの場合

[ 1] SCAN ELEMENT

table name SCM1.TBL1

scan type INDEX KEY SCAN(1)

dso name TBL1_IX1_DSO [PAGE/SH]

condition evaluation No

scan record number 500

[ 2] INSERT ELEMENT

table name SORT0001

insert record length 58

DELETEエレメントの詳細情報

詳細情報 意味

table name レコード削除対象の表名

dso name

レコード削除対象のDSO名一覧

DSO名の後方に、そのDSO資源をアクセスするときの占有

単位および占有モードを表示する。

占有単位

DSI : DSIの単位

PAGE : ページ単位

REC : レコード単位

占有モード

EX : 非共用モード

表とインデックスからレコードを削除する場合

[ 1] SCAN ELEMENT

- 49 -

table name SCM1.TBL1

scan type TABLE KEY SCAN

dso name TBL1_BASE_DSO [PAGE/SH]

condition evaluation No

scan record number 1

[ 2] DELETE ELEMENT

table name SCM1.TBL1

dso name TBL1_BASE_DSO [PAGE/EX]

TBL1_IX1_DSO [PAGE/EX]

UPDATEエレメントの詳細情報

詳細情報 意味

table name 更新対象の表名

dso name

更新対象のDSO名一覧

DSO名の後方に、そのDSO資源をアクセスするときの占有

単位および占有モードを表示する。

占有単位

DSI : DSIの単位

PAGE : ページ単位

REC : レコード単位

占有モード

EX : 非共用モード

表とインデックスのデータを更新する場合

[ 1] SCAN ELEMENT

table name SORT0001

scan type TABLE ALL SCAN

condition evaluation No

[ 2] SCAN ELEMENT

table name SCM1.TBL1

scan type TABLE KEY SCAN

dso name TBL1_BASE_DSO [PAGE/SH]

condition evaluation No

scan record number 1

[ 3] UPDATE ELEMENT

table name SCM1.TBL1

dso name TBL1_BASE_DSO [PAGE/EX]

TBL1_IX1_DSO [PAGE/EX]

OUTPUTエレメントの詳細情報

詳細情報 意味

record length 出力するレコード長(単位はバイト)

表をインデックスで検索して、結果をアプリケーションに返却する場合

[ 1] SCAN ELEMENT

table name SCM1.TBL1

scan type INDEX TABLE SCAN(1)

dso name TBL1_IX1_DSO [PAGE/SH]

TBL1_BASE_DSO [PAGE/SH]

- 50 -

condition evaluation No

scan record number 10

[ 2] OUTPUT ELEMENT

record length 150

GROUPINGエレメントの詳細情報

詳細情報 意味

condition evaluation条件の判定

Yes : 条件を判定する

No : 条件を判定しない

subquery evaluation副問合せを判定する場合の副問合せ

の副番号

stop key evaluation

検索処理を止める場合の条件や句の

詳細

ROWNUM : ROWNUMの条件を判

定して検索処理を止める

LIMIT : 大件数指定LIMITを判定

して検索処理を止める

例1

表を検索してグループ化する場合

[ 1] SCAN ELEMENT

table name SCM1.TBL1

scan type TABLE ALL SCAN

dso name TBL1_BASE_DSO [NONE/NONE]

condition evaluation No

scan record number 1000

[ 2] GROUPING ELEMENT

condition evaluation No

[ 3] OUTPUT ELEMENT

record length 8

例2

ソートを検索してグループ化しながらROWNUMの条件を判定して検索処理を止める場合

[ 1] SCAN ELEMENT

table name SORT0001

scan type TABLE ALL SCAN

condition evaluation No

[ 2] GROUPING ELEMENT

condition evaluation Yes

stop key evaluation ROWNUM

[ 3] OUTPUT ELEMENT

record length 10

例3

ソートを検索してグループ化しながら 大件数指定LIMITを判定して検索処理を止める場合

[ 1] SCAN ELEMENT

table name SORT0001

scan type TABLE ALL SCAN

condition evaluation No

[ 2] GROUPING ELEMENT

- 51 -

condition evaluation Yes

stop key evaluation LIMIT

[ 3] OUTPUT ELEMENT

record length 10

TRIGGER EXECUTIONエレメントの詳細情報

詳細情報 意味

trigger name 実行するトリガの名前一覧

表を更新したときにトリガを実行する場合

[ 1] SCAN ELEMENT

table name SCM1.TBL1

scan type TABLE KEY SCAN

dso name TBL1_BASE_DSO [REC/SH]

condition evaluation No

scan record number 1

[ 2] UPDATE ELEMENT

table name SCM1.TBL1

dso name TBL1_BASE_DSO [REC/EX]

TBL1_IX1_DSO [REC/EX]

[ 3] TRIGGER EXECUTION ELEMENT

trigger name SCM1.TRIGGER1

動作環境

動作環境には、以下の情報を出力します。

詳細情報 意味

transaction access mode

トランザクションのアクセスモード

READ ONLY READ WRITE

transaction isolation level

トランザクションの独立性水準

SERIALIZABLE REPEATABLE READ READ COMMITTED READ UNCOMMITTED

R_LOCK行単位の排他の指定有無

YES : 行単位の排他の指定あり

NO : 行単位の排他の指定なし

JOIN_RULE

ジョインにマージジョインを優先するか

フェッチジョインを優先するか。

AUTO : Symfoware/RDBが自動的

に選択する

MERGE: マージジョインのアクセスモ

デルを優先する

FETCH: フェッチジョインのアクセス

モデルを優先する

JOIN_ORDER

結合表の中に指定した表と外に指定し

た表のジョイン順の指定。

AUTO : Symfoware/RDBが自動的

に選択する

INSIDE: 結合表から先にジョインす

- 52 -

詳細情報 意味

OUTSIDE: 結合表の中に指定した

表と結合表の外に指定した表から先に

ジョインする

SCAN_KEY_ARITHMETIC_RANGE

四則演算の検索範囲について、イン

デックス範囲検索、または、クラスタキー

の検索を行うか否か

YES : インデックスの範囲検索、また

は、クラスタキー検索を行う

NO : インデックスの範囲検索、また

は、クラスタキー検索を行わない

SCAN_KEY_CAST

探索条件のCASTオペランドに指定し

た列でインデックスの範囲検索、また

は、クラスタキー検索を行うか

YES : インデックスの範囲検索、また

は、クラスタキー検索を行う

NO : インデックスの範囲検索、また

は、クラスタキー検索を行わない

TID_SORT

インデックス検索と表データ取得のアク

セスモデルでTIDソートを利用するか否

か。

YES : TIDソートを利用する

NO : TIDソートを利用しない

TID_UNION

TIDユニオンマージのアクセスモデルを

有効にするか。

YES : 有効にする

NO : 有効にしない

USQL_LOCK

UPDATE文:探索またはDELETE文:

探索の更新標的レコードを位置づける

部分の占有モードの指定

SH : 占有する

EX : 占有しない

IGNORE_INDEX

インデックスを使用しないアクセスプラ

ンを選択するか否か。

YES : インデックスを使用しないアク

セスプランを選択

NO : インデックスを使用するアクセス

プランを選択

INACTIVE_INDEX_SCAN

非活性状態のインデックスDSIを含むイ

ンデックスを使用したアクセスプランを

選択するか否か。

YES : 非活性状態のインデックスDSIを含むインデックスを使用したアクセス

プランを選択する

NO : 非活性状態のインデックスDSIを含むインデックスを使用したアクセス

プランを選択しない

SS_RATE 述語ごとの検索範囲の選択率の値

4.2.5 アクセスプランの出力例

アクセスプランの出力例を示します。

- 53 -

概念図

アクセスプラン出力例

例1

出力レベルに1を指定した場合

###################### ACCESS PLAN START 11:01:05 04/20 ######################

Input SQL statement:

SELECT*FROM SCM1.VIEW1 WHERE C1=10 AND C2<>0 AND C3>ALL(SELECT C1 FROM SCM1.T

BL2 WHERE VIEW1.C4=TBL2.C2)FOR READ ONLY

===============================================================================

Main query

=sno===sectname=====input1==============input2==============output/update======

1 : SCAN [TBL1_IX1_DSO ][ ][SORT0002 ]

2 : SCAN [SORT0002 ][TBL1_BASE_DSO ][WORK0001 ]

3 : SCAN [WORK0001 ][ ][APPL ]

===============================================================================

2-1 Subquery

=sno===sectname=====input1==============input2==============output/update======

1 : SCAN [TBL2_IX1_DSO ][TBL2_BASE_DSO ][ ]

############################### ACCESS PLAN END ###############################

例2

出力レベルに2を指定した場合

###################### ACCESS PLAN START 11:01:05 04/20 ######################

Input SQL statement:

SELECT*FROM SCM1.VIEW1 WHERE C1=10 AND C2<>0 AND C3>ALL(SELECT C1 FROM SCM1.T

BL2 WHERE VIEW1.C4=TBL2.C2)FOR READ ONLY

Convert SQL statement:

SELECT TBL1.C1, TBL1.C2, TBL1.C3, TBL1.C4, TBL1.C5, TBL1.C6, TBL1.C7, TBL1.C8

, TBL1.C9 FROM SCM1.TBL1 WHERE TBL1.C1=? AND TBL1.C2<>? AND TBL1.C3>ALL (SELE

CT TBL2.C1 FROM SCM1.TBL2 WHERE TBL2.C2=TBL1.C4)

===============================================================================

Main query

=sno===sectname=====input1==============input2==============output/update======

1 : SCAN [TBL1_IX1_DSO ][ ][SORT0002 ]

-------------------------------------------------------------------------------

[ 1] SCAN ELEMENT

- 54 -

table name SCM1.TBL1

scan type INDEX KEY SCAN(1)

dso name TBL1_IX1_DSO [PAGE/SH]

condition evaluation Yes

scan record number 100

[ 2] INSERT ELEMENT

table name SORT0002

insert record length 12

-------------------------------------------------------------------------------

2 : SCAN [SORT0002 ][TBL1_BASE_DSO ][WORK0001 ]

-------------------------------------------------------------------------------

[ 1] SCAN ELEMENT

table name SORT0002

scan type TABLE ALL SCAN

condition evaluation No

[ 2] SCAN ELEMENT

table name SCM1.TBL1

scan type TABLE KEY SCAN

dso name TBL1_BASE_DSO [PAGE/SH]

condition evaluation Yes

subquery evaluation -->2-1

scan record number 1

[ 3] INSERT ELEMENT

table name WORK0001

insert record length 262

-------------------------------------------------------------------------------

3 : SCAN [WORK0001 ][ ][APPL ]

-------------------------------------------------------------------------------

[ 1] SCAN ELEMENT

table name WORK0001

scan type TABLE ALL SCAN

condition evaluation No

[ 2] OUTPUT ELEMENT

record length 262

===============================================================================

2-1 Subquery

=sno===sectname=====input1==============input2==============output/update======

1 : SCAN [TBL2_IX1_DSO ][TBL2_BASE_DSO ][ ]

-------------------------------------------------------------------------------

[ 1] SCAN ELEMENT

table name SCM1.TBL2

scan type INDEX TABLE SCAN(1)

dso name TBL2_IX1_DSO [PAGE/SH]

TBL2_BASE_DSO [PAGE/SH]

condition evaluation No

scan record number 5

Execution environment

-------------------------------------------------------------------------------

transaction access mode : READ ONLY

transaction isolation level : READ COMMITTED

R_LOCK : NO

JOIN_RULE : AUTO

SCAN_KEY_ARITHMETIC_RANGE : YES

SCAN_KEY_CAST : YES

JOIN_ORDER : AUTO

TID_SORT : YES

TID_UNION : YES

USQL_LOCK : SH

IGNORE_INDEX : NO

INACTIVE_INDEX_SCAN : YES

SS_RATE : 0.200000 0.250000 0.500000 0.400000 0.000100

############################### ACCESS PLAN END ###############################

- 55 -

4.3 SQL性能情報を取得する

SQL性能情報の取得方法には、以下の2つがあります。

・ rdbexecsqlコマンドを使用して取得する

・ アプリケーションから取得する

rdbexecsqlコマンドを使用してSQL性能情報を取得するには、以下の制御文を使用します。

・ SQL TRACE文(実行時のSQL性能情報の取得)

・ SNAP文(SQL_SNAP情報の取得)

採取した情報は、SQL実行処理での資源利用状況および負荷状況を調査し、チューニングが必要な資源を特定するた

めに使用します。

また、アクセスプラン情報と合わせて調査することでSQL文のチューニングに役立てることができます。

4.3.1 rdbexecsqlコマンドを使用して実行時のSQL性能情報を取得する

任意のSQL文のSQL性能情報を取得したい場合に、rdbexecsqlコマンドを使用します。SQL TRACE文では、SQL文が

動作するために扱ったデータ量、および、使用した資源量を、SQLが動作する個々の処理単位に収集し出力するため

の指定ができます。

例1

SQL性能情報の取得を開始する

$ rdbexecsql -s USER_DB

SQL>SQL TRACE ON /tmp/trace.log,2

SQL>SELECT COL1 FROM S1.TBL1

~ データ表示 ~

取得するSQL性能情報の内容については、“4.3.5 SQL性能情報の取得内容”を参照してください。

例2

SQL性能情報の取得を終了する

SQL> SQL TRACE OFF

注意

SQL TRACE文ではトランザクションは開始されません。

SQL TRACE文の詳細については、“5.27 SQL TRACE文”を参照してください。

4.3.2 rdbexecsqlコマンドを使用してSQL_SNAP情報を取得する

任意のSQL文のSQL_SNAP情報を取得したい場合に、rdbexecsqlコマンドを使用します。SNAP文では、SQL文の情報を

SQL文単位に収集し、出力するための指定ができます。

例1

SNAPの取得を開始する

SQL>SNAP ON /tmp/sql.snp

参照

取得するSQL_SNAP情報については、“アプリケーション開発ガイド(埋込みSQL編)”のSQL_SNAP機能の出力形

式を参照してください。

- 56 -

例2

SNAPの取得を終了する

SQL>SNAP OFF

SNAP文の詳細については、“5.26 SNAP文”を参照してください。

4.3.3 アプリケーションからSQL性能情報を取得する

アプリケーションを実行して、アプリケーション単位にSQL性能情報を取得するには、クライアント用の動作環境ファイル

に以下の実行パラメタを指定してください。

SQL_TRACE

【指定形式】

SQL_TRACE = ({ON | OFF},性能情報ファイル名[,出力レベル])

【実行パラメタの意味】

アプリケーション単位でSQL性能情報を取得するかどうかを指定します。省略した場合は、“OFF”が指定されたもの

とみなします。

【パラメタの意味】

ON:

SQL性能情報取得機能を利用する場合に指定します。

OFF:

SQL性能情報取得機能を利用しない場合に指定します。

性能情報ファイル名:

出力先のサーバ側のファイル名を、絶対パスで指定します。指定されたファイルがすでに存在する場合は、情報

を追加して出力します。

複数のアプリケーションが動作する場合は、クライアント用の動作環境ファイルの実行パラメ

タ“DIV_TRACE_FILE”の指定により、出力ファイル名の後にプロセスIDなどの情報を付加して、個別のトレース

情報を出力します。

アプリケーションがマルチスレッド環境で動作する場合は、DIV_TRACE_FILEの指定に関係なく、出力ファイル

名の後にプロセスIDやセションIDなどの情報を自動的に付加して、個別のトレース情報を出力します。

出力レベル:

出力レベルには1または2を指定します。1を指定すると、DSOごとに集計されたSQL性能情報を出力します。2を指定すると、DSI単位の情報までも出力します。省略した場合は、2が指定されたものとみなします。

出力レベルによる、出力内容の詳細については、“4.3.6.3 実行エレメント情報”を参照してください。

4.3.4 アプリケーションからSQL_SNAP情報を取得する

アプリケーションを実行して、アプリケーション単位にSQL_SNAP情報を取得するには、クライアント用の動作環境ファイ

ルに以下の実行パラメタを指定してください。

SQL_SNAP

【指定形式】

SQL_SNAP = ({ON | OFF}[,[スナップファイル名][,[出力レベル][,[繰り返し幅]]]])

【実行パラメタの意味】

アプリケーション単位でSQL_SNAP情報を取得するかどうかを指定します。省略した場合は、OFFが指定されたとみ

なします。

- 57 -

【パラメタの意味】

ON:

SQL_SNAP情報取得機能を利用する場合に指定します。

OFF:

SQL_SNAP情報取得機能を利用しない場合に指定します。

スナップファイル名:

出力するSQL文の実行情報の出力先ファイル名を指定します。ファイル名を省略した場合は、アプリケーションの

ファイル名の拡張子を“.SNP”に変更したものとなります。ファイル名にディレクトリの指定がない場合は、カレント

ディレクトリが指定されたものとみなします。指定されたファイルがすでに存在する場合は、情報を追加して出力し

ます。

複数のアプリケーションが動作する場合は、クライアント用の動作環境ファイルの実行パラメ

タ“DIV_TRACE_FILE”の指定により、出力ファイル名の後にプロセスIDなどの情報を付加して、個別のトレース

情報を出力します。

アプリケーションがマルチスレッド環境で動作する場合は、DIV_TRACE_FILEの指定に関係なく、出力ファイル

名の後にプロセスIDやセションIDなどの情報を自動的に付加して、個別のトレース情報を出力します。

出力レベル:

出力する情報のレベルとして、1または2を指定します。省略した場合は、2が指定されたとみなします。

繰り返し幅:

出力する情報の繰り返し幅として、1から32767を指定します。1つのSQL文の出力を1とします。繰り返し幅を指定

した場合は、その幅でサイクリックに情報を出力します。省略した場合は、先頭からの情報をすべて出力します。

参照

出力レベルの指定と出力情報の詳細については、“アプリケーション開発ガイド(埋込みSQL編)”を参照してください。

4.3.5 SQL性能情報の取得内容

SQL性能情報では、以下の情報を取得します。

・ SQL文情報

・ セクション情報

・ 実行エレメント情報

SQL文情報

アプリケーションで指定したSQL性能情報取得対象のSQL文を、以下の形式で表示します。

・ 英小文字は英大文字で表示する

・ SQL文の前後の空白は削除して表示する

・ SQL文中の冗長な空白は削除して表示する

セクション情報

1つの処理単位の番号と処理時間を表示します。

実行エレメント情報

SQL文実行時に扱ったデータ量および資源量に関する情報を表示します。

4.3.6 SQL性能情報の出力形式

SQL性能情報は、以下の形式で出力します。

- 58 -

Sub query:

副問合せがある場合に、副問合せを実行するためのDBアクセス資源情報を表示します。

UPDATE CURSOR / DELETE CURSOR INFORMATION:

カーソルを利用した更新の場合、そのカーソルで扱った総データ量および総資源量を表示します。

注意

ロードシェア運用では、アプリケーションと接続しているRDBシステムのDSIの情報のみ表示します。

SQL性能情報の表現

SQL性能情報は、各セクションで扱ったデータ量と資源量を出力します。処理の順番はセクション番号で表現します。

- 59 -

セクション中に副問合せがある場合は、そのセクションの実行エレメントの情報中の“subquery evaluation”で表示した副番号

(副問合せの処理番号)に対応するように、副問合せの処理でアクセスした資源情報が表示されます。

副問合せの副番号は、以下のように表示します。

- 60 -

- 61 -

“UPDATE CURSOR / DELETE CURSOR INFORMATION”では、カーソルのOPEN文からカーソルのCLOSE文間で

扱った総データ量および総資源量を実行エレメント情報として表示します。

(1) 現在カーソル位置のレコードをTABLE KEY SCANで位置づける。

(2) 表レコードを取得する。

(3) 表レコードのC3部分を更新する。

(4) 更新前のデータからインデックスの当該レコードを削除して、新しいレコードを挿入する。

4.3.6.1 SQL文情報

SQL文情報は、SQL文単位に出力されます。

カーソル系のSQL文は、カーソルのOPEN文からカーソルのCLOSE文まで1つの単位で表示されます。非カーソル系のSQL文は、1SQL文が1つの単位で表示されます。

[SQL文情報の詳細]

詳細情報 意味

SQL statement 実行したSQL文

- 62 -

詳細情報 意味

Total TimeSQL処理時間(形式は“時:分:秒(ミリ秒)”)

カーソル系のSQL文 : カーソル処理実行時間の合計

その他 : 1SQL文の処理時間

SQL statement :

SELECT SCM1.TBL1.C1 FROM SCM1.TBL1

Total Time : 00:00:00(019)

4.3.6.2 セクション情報

セクションとは、テーブルからデータを読み込み、対象データの抽出や加工を行い、中間ファイルに出力するという一連

の処理単位のことです。

セクション情報は、セクション単位に出力され、セクションの処理時間が表示されます。

[セクション情報の詳細]

詳細情報 意味

Section No セクション番号

Section Time セクションごとの処理時間(形式は“時:分:秒(ミリ秒)”)

-----------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(004)

-----------------------------------------------------------------------------

4.3.6.3 実行エレメント情報

実行エレメント情報では、そのセクションで実行した資源アクセス時のデータ量および資源量に関する情報を表示しま

す。

[実行エレメント情報の詳細]

詳細情報 意味

実行エレメント番号 当該セクション内での実行エレメント番号

実行エレメント名 資源アクセスに対する代表資源名

- 63 -

詳細情報 意味

実行エレメント SQL文実行時に扱ったデータ量

以下に、実行エレメントの詳細を示します。

実行エレメント名 意味

TABLE ACCESSデータベースアクセスに対するSQL性能情報を表示する

代表資源名

SORT INSERTソートテーブルに対してレコード挿入処理を行ったときの

代表資源名

SORT SCANソートテーブルからのレコード取り出し処理を行ったときの

代表資源名

SORT INSERTSCAN

1つのセクション内で、同一ソートテーブルを複数回使用

したときの代表資源名

WORK INSERTワークテーブルに対してレコード挿入処理を行ったときの

代表資源名

WORK SCANワークテーブルからのレコード取り出し処理を行ったときの

代表資源名

WORK INSERTSCAN

1つのセクション内で、同一ワークテーブルを複数回使用

したときの代表資源名

MERGE JOIN マージジョイン処理を行ったときの代表資源名

FETCH JOIN フェッチジョイン処理を行ったときの代表資源名

NESTED LOOPJOIN

ネスティドループジョイン処理を行ったときの代表資源名

GROUPING グループ処理結果表示する代表資源名

OUTPUT問い合わせ結果をアプリケーションに返却するSQL性能

情報を表示する代表資源名

TRIGGEREXECUTION

トリガ処理に関するSQL性能情報を表示する代表資源名

TABLE ACCESS実行エレメント

データベースアクセス時に扱ったデータ量および資源量に関する情報を表示します。

詳細情報 意味

出力

レベ

ル1

出力

レベ

ル2

table name アクセスプランに対応した表名 ○ ○

table access(read/ins/del/upd)

レコード読込み、挿入、削除および更新件数 ○ ○

parallel number 並列検索時の多重度 ○ ○

base dso name アクセスプランに対応した表のDSO名 ○ ○

index dso nameアクセスプランに対応したインデックスのDSO名

○ ○

dso access(read/ins/del/upd)

DSOごとのレコード読込み、挿入、削除およ

び更新件数○ ○

dsi number(access/total)

アクセスしたDSI数とアクセス対象の表のDSI数

○ ○

- 64 -

詳細情報 意味

出力

レベ

ル1

出力

レベ

ル2

base dsi name 表のDSI名 × ○

index dsi name インデックスのDSI名 × ○

dsi access(read/ins/del/upd)

DSIごとのレコード読込み、挿入、削除およ

び更新件数× ○

subqueryevaluation

副問合わせの副番号 ○ ○

○:表示する。

×:表示しない。

例1

表の検索(出力レベル1の場合)

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 15/0/0/0

base dso name : BASEDSO1

dso access (read/ins/del/upd) : 15/0/0/0

dsi number (access/total) : 3/3

表の検索(出力レベル2の場合)

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 15/0/0/0

base dso name : BASEDSO1

dso access (read/ins/del/upd) : 15/0/0/0

dsi number (access/total) : 3/3

base dsi name : BASEDSI1

dsi access (read/ins/del/upd) : 5/0/0/0

base dsi name : BASEDSI2

dsi access (read/ins/del/upd) : 5/0/0/0

base dsi name : BASEDSI3

dsi access (read/ins/del/upd) : 5/0/0/0

例2

表の検索(並列スキャン)(出力レベル1の場合)

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 15/0/0/0

parallel number : 3

base dso name : BASEDSO1

dso access (read/ins/del/upd) : 15/0/0/0

dsi number (access/total) : 3/3

表の検索(並列スキャン)(出力レベル2の場合)

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 15/0/0/0

parallel number : 3

base dso name : BASEDSO1

dso access (read/ins/del/upd) : 15/0/0/0

dsi number (access/total) : 3/3

- 65 -

base dsi name : BASEDSI1

dsi access (read/ins/del/upd) : 5/0/0/0

base dsi name : BASEDSI2

dsi access (read/ins/del/upd) : 5/0/0/0

base dsi name : BASEDSI3

dsi access (read/ins/del/upd) : 5/0/0/0

例3

インデックスの検索(出力レベル1の場合)

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 0/0/0/0

base dso name : TBL1_BASE1_DSO

dso access (read/ins/del/upd) : 0/0/0/0

dsi number (access/total) : 0/1

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 1/0/0/0

dsi number (access/total) : 1/1

インデックスの検索(出力レベル2の場合)

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 0/0/0/0

base dso name : TBL1_BASE1_DSO

dso access (read/ins/del/upd) : 0/0/0/0

dsi number (access/total) : 0/1

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 1/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX1_DSI

dsi access (read/ins/del/upd) : 1/0/0/0

例4

表のINSERT(出力レベル1の場合)

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 0/1/0/0

base dso name : BASEDSO

dso access (read/ins/del/upd) : 0/1/0/0

dsi number (access/total) : 1/1

表のINSERT(出力レベル2の場合)

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 0/1/0/0

base dso name : BASEDSO

dso access (read/ins/del/upd) : 0/1/0/0

dsi number (access/total) : 1/1

base dsi name : BASEDSI1

dsi access (read/ins/del/upd) : 0/1/0/0

- 66 -

例5

表のDELETE(出力レベル1の場合)

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 1/0/1/0

base dso name : BASEDSO

dso access (read/ins/del/upd) : 1/0/1/0

dsi number (access/total) : 1/1

表のDELETE(出力レベル2の場合)

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 1/0/1/0

base dso name : BASEDSO

dso access (read/ins/del/upd) : 1/0/1/0

dsi number (access/total) : 1/1

base dsi name : BASEDSI1

dsi access (read/ins/del/upd) : 1/0/1/0

例6

表のUPDATE(出力レベル1の場合)

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 1/0/0/1

base dso name : BASEDSO

dso access (read/ins/del/upd) : 1/0/0/1

dsi number (access/total) : 1/1

表のUPDATE(出力レベル2の場合)

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 1/0/0/1

base dso name : BASEDSO

dso access (read/ins/del/upd) : 1/0/0/1

dsi number (access/total) : 1/1

base dsi name : BASEDSI1

dsi access (read/ins/del/upd) : 1/0/0/1

なお、編み掛けの部分は、出力レベル2のときに出力される情報です。

SORT INSERT実行エレメント

ソートテーブルのレコード挿入時に使用したデータ量および資源量に関する情報を表示します。

詳細情報 意味

出力

レベ

ル1

出力

レベ

ル2

sort name アクセスプランに対応したソートテーブル名 ○ ○

sort type

ソートテーブルの挿入方法

ALL : すべてのレコードをソートテーブルへ挿入

DISTINCT : 重複行を排除したレコードをソートテーブ

ルへ挿入

○ ○

key length(byte) レコード挿入時のキー長(単位はバイト) ○ ○

- 67 -

詳細情報 意味

出力

レベ

ル1

出力

レベ

ル2

recordlength(byte)

レコード挿入時のレコード長(単位はバイト) ○ ○

record number レコード挿入時のレコード件数 ○ ○

SORT INSERT実行エレメントの表示例

[1] SORT INSERT

sort name : SORT0001

sort type : ALL

key length(byte) : 4

record length(byte) : 32

record number : 5

SORT SCAN実行エレメント

ソートテーブルのデータ取り出し時に扱ったデータ量および資源量に関する情報を表示します。

詳細情報 意味

出力

レベル

1

出力

レベル

2

sort name アクセスプランに対応したソートテーブル名 ○ ○

sort typeソートテーブルの取出し方法

ALL : 入力レコードのソート

DISTINCT : キー値が同じレコードを排除しながらのソート

○ ○

record number レコード取り出し時のレコード件数 ○ ○

used memory(kb) ソート処理時のメモリ使用量 ○ ○

file size(kb) ソート処理時の二次記憶使用量 ○ ○

run(number/capacity)

二次記憶のラン(注)の数と1度にマージできるランの数

ランの数/1度にマージできるランの数を表示する。○ ○

subquery evaluation 副問合せの副番号 ○ ○

run merge マージを実行した回数 ○ ○

注) メモリ上で保持している部分的にソートされた単位

ソート処理:

ソートテーブルのレコード挿入からソートテーブルのデータ取り出しまでの処理です。

SORT SCAN実行エレメントの表示例

[1] SORT SCAN

sort name : SORT0001

sort type : ALL

record number : 5

used memory(kb) : 64

file size(kb) : 0

run(number/capacity): 0/0

run merge : 0

- 68 -

SORT INSERT SCAN実行エレメント

1つのセクション内で、同一のソートテーブルがソート処理で複数回使用されたときの資源情報を表示します。

詳細情報 意味出力レ

ベル1出力レ

ベル2

sort name アクセスプランに対応したソートテーブル名 ○ ○

sort typeソートテーブルの取り出し方法

ALL : 入力レコードのソート

DISTINCT : キー値が同じレコードを排除しながらのソート

○ ○

sort process count ソート処理を実行した回数 ○ ○

key length(byte) レコード挿入時のキー長(単位はバイト) ○ ○

record length(byte) レコード挿入時のレコード長(単位はバイト) ○ ○

used memory(kb) ソート処理時の 大メモリ使用量(単位はキロバイト) ○ ○

file size(kb) ソート処理時の 大二次記憶使用量(単位はキロバイト) ○ ○

run(number/capacity)

割合が 大の二次記憶のラン(注)の数と1度にマージでき

るランの数

ランの数/1度にマージできるランの数を表示する。

○ ○

run merge マージを実行した回数 ○ ○

max record number(INSERT/SCAN)

レコード挿入時とレコード取り出し時の 大レコード件数 ○ ○

total record number(INSERT/SCAN)

レコード取り出し時の総レコード件数およびレコード挿入時

の総レコード件数○ ○

注) メモリ上で保持している部分的にソートされた単位

SORT INSERT SCAN実行エレメントの表示例

[1] SORT INSERT SCAN

sort name : SORT0001

sort type : DISTINCT

sort process count : 3

key length(byte) : 4

record length(byte) : 32

used memory(kb) : 64

file size(kb) : 0

run(number/capacity): 0/0

run merge : 0

max record number (INSERT/SCAN) : 5/5

total record number(INSERT/SCAN) : 10/10

WORK INSERT実行エレメント

ワークテーブルのレコード挿入時に扱ったデータ量および資源量に関する情報を表示します。

詳細情報 意味出力レベル

1出力レベル

2

work name アクセスプランと同一のワークテーブル名 ○ ○

record length(byte) レコード挿入時のレコード長 ○ ○

record number レコードの挿入件数 ○ ○

- 69 -

WORK INSERT実行エレメントの表示例

[1] WORK INSERT

work name : WORK0001

record length(byte) : 32

record number : 5

WORK SCAN実行エレメント

ワークテーブルのレコード取出し時に扱ったデータ量および資源量に関する情報を表示します。

詳細情報 意味 出力レベル1 出力レベル2

work name アクセスプランと同一のワークテーブル名 ○ ○

record number データ取り出し時のレコード件数 ○ ○

usedmemory(kb)

ワーク処理時のメモリ使用量 ○ ○

file size(kb) ワーク処理時の二次記憶使用量 ○ ○

subqueryevaluation

副問合せの副番号 ○ ○

ワーク処理:

ワークテーブルのレコード挿入からワークテーブルのデータ取り出しまでの処理です。

WORK SCAN実行エレメントの表示例

[1] WORK SCAN

work name : WORK0001

record number : 5

used memory(kb) : 64

file size(kb) : 0

WORK INSERT SCAN実行エレメント

1つのセクション内で、同一のワークテーブルを複数回使用する場合のデータの挿入および取出し時の資源情報を表示

します。

詳細情報 意味出力レベル

1出力レベル

2

work name アクセスプランに対応したワークテーブル名 ○ ○

recordlength(byte)

レコード挿入時のレコード長 ○ ○

used memory(kb) ワーク処理時の 大メモリ使用量 ○ ○

file size(kb) ワーク処理時の 大二次記憶使用量 ○ ○

work processcount(INSERT/SCAN)

ワークテーブルに対するレコード取出し処

理回数と、レコード挿入処理回数○ ○

max recordnumber(INSERT/SCAN)

レコード挿入時とレコード取出し時の 大レ

コード件数○ ○

- 70 -

詳細情報 意味出力レベル

1出力レベル

2

total record number(INSERT/SCAN)

レコード取出し時の総レコード件数およびレ

コード挿入時の総レコード件数○ ○

WORK INSERT SCAN実行エレメントの表示例

[1] WORK INSERT SCAN

work name : WORK0001

record length(byte) : 32

used memory(kb) : 64

file size(kb) : 0

work process count (INSERT/SCAN) : 3

max record number (INSERT/SCAN) : 5/5

total record number(INSERT/SCAN) : 10/10

MERGE JOIN実行エレメント

マージジョイン処理で使用したデータ量および資源量に関する情報を表示します。

詳細情報 意味出力レ

ベル1出力レ

ベル2

result record number ジョイン結果件数 ○ ○

max duplicate number 大重複件数 ○ ○

used memory(kb) MERGE JOIN処理時の 大メモリ使用量 ○ ○

ジョイン実行

エレメント情報

ジョイン処理を行うために利用される複数の実

行エレメント情報○ ○

MERGE JOIN実行エレメントの表示例

- 71 -

FETCH JOIN実行エレメント

フェッチジョイン処理で扱ったデータ量および資源量に関する情報を表示します。

詳細情報 意味出力レ

ベル1出力レ

ベル2

result record number ジョイン結果件数 ○ ○

ジョイン実行

エレメント情報

ジョイン処理を行うために利用される複数の実

行エレメント情報○ ○

FETCH JOIN実行エレメントの表示例

[1] FETCH JOIN

result record number : 3

1) TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 0/0/0/0

base dso name : TBL1_BASE1_DSO

dso access (read/ins/del/upd) : 0/0/0/0

dsi number (access/total) : 0/1

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 3/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX1_DSI

dsi access (read/ins/del/upd) : 3/0/0/0

2) TABLE ACCESS

table name : TBL2

table access (read/ins/del/upd) : 3/0/0/0

base dso name : TBL2_BASE1_DSO

dso access (read/ins/del/upd) : 3/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL2_BASE1_DSI

dsi access (read/ins/del/upd) : 3/0/0/0

- 72 -

index dso name : TBL2_IX1_DSO

dso access (read/ins/del/upd) : 3/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL2_IX1_DSI

dsi access (read/ins/del/upd) : 3/0/0/0

NESTED LOOP JOIN実行エレメント

ネスティドループジョイン処理で扱ったデータ量および資源量に関する情報を表示します。

詳細情報 意味出力レ

ベル1出力レ

ベル2

result record number ジョイン結果件数 ○ ○

ジョイン実行

エレメント情報

ジョイン処理を行うために利用される複数の実

行エレメント情報○ ○

NESTED LOOP JOIN実行エレメントの表示例

[1] NESTED LOOP JOIN

result record number : 3

1) WORK SCAN

work name : WORK0001

record access : 5

used memory(kb) : 64

file size(kb) : 0

2) TABLE ACCESS

table name : TBL2

table access (read/ins/del/upd) : 3/0/0/0

base dso name : BASEDSO

dso access (read/ins/del/upd) : 3/0/0/0

dsi number (access/total) : 1/1

base dsi name : BASEDSI1

dsi access (read/ins/del/upd) : 3/0/0/0

GROUPING実行エレメント

詳細情報 意味 出力レベル1出力レベル

2

result record number グループ結果件数 ○ ○

subquery evaluation 副問合せの副番号 ○ ○

GROUPING実行エレメントの表示例

[1] SORT SCAN

sort name : SORT0001

scan type : ALL

record access : 3

used memory(kb) : 64

file size(kb) : 0

run(number/capacity): 0/0

- 73 -

[2] GROUPING

result record number: 3

OUTPUT実行エレメント

詳細情報 意味 出力レベル1出力レベル

2

record number 結果データをクライアント側に送った件数 ○ ○

OUTPUT実行エレメントの表示例

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 5/0/0/0

base dso name : BASEDSO

dso access (read/ins/del/upd) : 5/0/0/0

dsi number (access/total) : 1/1

base dsi name : BASEDSI1

dsi access (read/ins/del/upd) : 5/0/0/0

[2] OUTPUT

record number : 5

TRIGGER EXECUTION実行エレメント

詳細情報 意味 出力レベル1 出力レベル2

execution numbers トリガ実行回数 ○ ○

TRIGGER EXECUTION実行エレメントの表示例

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 3/3/0/0

base dso name : BASEDSO

dso access (read/ins/del/upd) : 3/3/0/0

dsi number (access/total) : 3/3

base dsi name : BASEDSI1

dsi access (read/ins/del/upd) : 1/1/0/0

base dsi name : BASEDSI2

dsi access (read/ins/del/upd) : 1/1/0/0

base dsi name : BASEDSI3

dsi access (read/ins/del/upd) : 1/1/0/0

[2] TRIGGER EXECUTION

execution number : 1

[3] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 0/0/0/1

base dso name : BASEDSO

dso access (read/ins/del/upd) : 0/0/0/1

dsi number (access/total) : 1/1

base dsi name : BASEDSI1

dsi access (read/ins/del/upd) : 0/0/0/1

- 74 -

4.3.7 SQL性能情報の出力例

SQL性能情報の出力として、以下があります。

・ 表の全件検索

・ 表の全検索(DSI分割あり)

・ 並列スキャン

・ インデックス検索と表データ取得

・ group byありALL集合関数

・ 副問合せ

・ MERGE JOIN(インデックスを利用してジョインをして表データも取得する)

・ MERGE JOIN(ソートテーブルを利用してジョインする)

・ MERGE JOIN(ソートテーブルを利用してジョインする(ジョイン対象カラムに重複あり))

・ FETCH JOIN(ジョインされる側がインデックス)

・ FETCH JOIN(ジョインされる側が実表)

・ NESTED LOOP JOIN(実表を直接読み込んでジョインする)

・ UPDATE文:探索

・ UPDATE文:位置づけ

・ DELETE文:探索

・ DELETE文:位置づけ

・ INSERT文(挿入値リストを指定したINSERT文)

それぞれの例を、以下に示します。

表の全件検索

[SQL性能情報の出力例]

###################### SQL TRACE START 15:50:50 05/10 ########################

SQL statement :

SELECT*FROM SCM1.TBL1

Total Time : 00:00:00(028)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(014)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 1760/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 1760/0/0/0

dsi number (access/total) : 1/1

- 75 -

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 1760/0/0/0

[2] OUTPUT

record number : 1760

############################### SQL TRACE END ################################

表の全検索(DSI分割あり)

[SQL性能情報の出力例]

###################### SQL TRACE START 16:09:13 05/10 ########################

SQL statement :

SELECT*FROM SCM1.TBL1

Total Time : 00:00:00(328)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(222)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 1730/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 1730/0/0/0

dsi number (access/total) : 2/2

base dsi name : TBL1_BASE1_DSI

dsi access (read/ins/del/upd) : 865/0/0/0

base dsi name : TBL1_BASE1_DSI

dsi access (read/ins/del/upd) : 865/0/0/0

[2] OUTPUT

record number : 1730

############################### SQL TRACE END ################################

並列スキャン

[SQL性能情報の出力例]

###################### SQL TRACE START 16:14:28 05/10 ########################

SQL statement :

- 76 -

SELECT*FROM SCM1.TBL1 PARALLEL

Total Time : 00:00:00(019)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(019)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 1730/0/0/0

parallel number : 2

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 1730/0/0/0

dsi number (access/total) : 2/2

base dsi name : TBL1_BASE1_DSI

dsi access (read/ins/del/upd) : 865/0/0/0

base dsi name : TBL1_BASE2_DSI

dsi access (read/ins/del/upd) : 865/0/0/0

[2] OUTPUT

record number : 1730

############################### SQL TRACE END ################################

インデックス検索と表データ取得

[SQL性能情報の出力例]

###################### SQL TRACE START 16:39:53 05/10 ########################

SQL statement :

SELECT*FROM SCM1.TBL1 WHERE C1=1 AND C2 BETWEEN 1 AND 4 AND C3<50

Total Time : 00:00:00(657)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(200)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 0/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 0/0/0/0

dsi number (access/total) : 0/1

index dso name : TBL1_IX1_DSO

- 77 -

dso access (read/ins/del/upd) : 40/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX1_DSI

dsi access (read/ins/del/upd) : 40/0/0/0

[2] SORT INSERT

Sort name : SORT0001

Sort type : ALL

key length(byte) : 12

record length(byte) : 12

record number : 40

------------------------------------------------------------------------------

Section No : 2

Section Time : 00:00:00(165)

------------------------------------------------------------------------------

[1] SORT SCAN

sort name : SORT0001

sort type : ALL

record number : 40

used memory(kb) : 64

file size(kb) : 0

run(number/capacity): 0/0

run merge : 0

[2] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 40/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 40/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 40/0/0/0

[3] OUTPUT

record number : 20

############################### SQL TRACE END ################################

group byありALL集合関数

[SQL性能情報の出力例]

###################### SQL TRACE START 17:12:03 05/10 ########################

SQL statement :

SELECT SUM(C1)FROM SCM1.TBL1 GROUP BY C2

Total Time : 00:00:00(418)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(239)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 3470/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 3470/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

- 78 -

dsi access (read/ins/del/upd) : 3470/0/0/0

[2] SORT INSERT

sort name : SORT0001

sort type : ALL

key length(byte) : 4

record length(byte) : 8

record number : 3470

------------------------------------------------------------------------------

Section No : 2

Section Time : 00:00:00(035)

------------------------------------------------------------------------------

[1] SORT SCAN

sort name : SORT0001

sort type : ALL

record number : 3470

used memory(kb) : 64

file size(kb) : 0

run(number/capacity): 0/0

run merge : 0

[2] GROUPING

result record number: 10

[3] OUTPUT

record number : 10

############################### SQL TRACE END ################################

副問合せ

[SQL性能情報の出力例]

###################### SQL TRACE START 17:54:42 05/17 ########################

SQL statement :

SELECT C2 FROM SCM1.TBL1 WHERE C1 NOT IN(SELECT C2 FROM SCM1.TBL2 WHERE C3=2)

Total Time : 00:00:02(660)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(000)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL2

table access (read/ins/del/upd) : 10/0/0/0

base dso name : TBL2_BASE_DSO

dso access (read/ins/del/upd) : 10/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL2_BASE_DSI

dsi access (read/ins/del/upd) : 10/0/0/0

- 79 -

[2] WORK INSERT

work name : WORK0001

record length(byte) : 4

record number : 5

------------------------------------------------------------------------------

Section No : 2

Section Time : 00:00:00(038)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 3470/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 3470/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 3470/0/0/0

subquery evaluation : 2-1

[2] OUTPUT

record number : 1300

==============================================================================

Sub query : 2-1

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(087)

------------------------------------------------------------------------------

[1] WORK SCAN

work name : WORK0001

record number : 13010

used memory(kb) : 64

file size(kb) : 0

############################### SQL TRACE END ################################

MERGE JOIN(インデックスを利用してジョインをして表データも取得する)

(1)(3)WHERE探索条件よりインデックス検索範囲を作成し、INDEX KEY SCANを行う。

(インデックスに検索範囲が生成できない場合は、INDEX ALL SCANを行う)

(2)(4)インデックスキー(ジョインキー)の昇順にレコードを取得する。

- 80 -

(5) ソートマージ法でジョインを行う。

(6) TBL1のTIDでソートを行う。

(7) ソートからレコードを取り出し、表をTABLE KEY SCANする。

(8) TBL2のTIDでソートを行う。

(9) ソートからレコードを取り出し、表をTABLE KEY SCANして、結果データをアプリケーションに返却する。

[SQL性能情報の出力例]

###################### SQL TRACE START 10:04:32 05/11 ########################

SQL statement :

SELECT*FROM SCM1.TBL1,SCM1.TBL2 WHERE TBL1.C1=TBL2.C1 AND TBL1.C2=TBL2.C2 AND

TBL1.C1 BETWEEN 1 AND 5 AND TBL1.C3>0

Total Time : 00:00:01(982)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(282)

------------------------------------------------------------------------------

[1] MERGE JOIN

result record number : 5000

max duplicate number : 1

used memory(kb) : 0

1) TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 0/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 0/0/0/0

dsi number (access/total) : 0/1

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 50/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX1_DSI

dsi access (read/ins/del/upd) : 50/0/0/0

2) TABLE ACCESS

table name : TBL2

table access (read/ins/del/upd) : 0/0/0/0

base dso name : TBL2_BASE_DSO

dso access (read/ins/del/upd) : 0/0/0/0

dsi number (access/total) : 0/1

index dso name : TBL2_IX1_DSO

dso access (read/ins/del/upd) : 5000/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL2_IX1_DSI

dsi access (read/ins/del/upd) : 5000/0/0/0

[2] SORT INSERT

sort name : SORT0001

sort type : ALL

key length(byte) : 12

record length(byte) : 24

record number : 5000

------------------------------------------------------------------------------

Section No : 2

Section Time : 00:00:00(116)

------------------------------------------------------------------------------

[1] SORT SCAN

sort name : SORT0001

sort type : ALL

record number : 5000

used memory(kb) : 1090

file size(kb) : 0

- 81 -

run(number/capacity): 0/0

run merge : 0

[2] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 5000/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 5000/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 5000/0/0/0

[3] SORT INSERT

sort name : SORT0002

sort type : ALL

key length(byte) : 12

record length(byte) : 132 record number : 2500

------------------------------------------------------------------------------

Section No : 3

Section Time : 00:00:00(085)

------------------------------------------------------------------------------

[1] SORT SCAN

sort name : SORT0002

sort type : ALL

record number : 2500

used memory(kb) : 1090

file size(kb) : 0

run(number/capacity): 0/0

run merge : 0

[2] TABLE ACCESS

table name : TBL2

table access (read/ins/del/upd) : 2500/0/0/0

base dso name : TBL2_BASE_DSO

dso access (read/ins/del/upd) : 2500/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL2_BASE_DSI

dsi access (read/ins/del/upd) : 2500/0/0/0

[3] OUTPUT

record number : 2500

############################### SQL TRACE END ################################

- 82 -

MERGE JOIN(ソートテーブルを利用してジョインする)

(1)インデックス検索と表データ取得を利用して得られたレコードを、ソートテーブルにINSERTする。

(2)検索範囲を生成できないのでINDEX ALL SCANを行う。

(3)(4)ソートテーブルとインデックスからジョインキーの昇順にレコードを取り出す。

(5) ソートマージ法でジョインを行う。

(6) TBL2のTIDでソートを行う。

(7) ソートからレコードを取り出し、表をTABLE KEY SCANして、結果データをアプリケーションに返却する。

[SQL性能情報の出力例]

###################### SQL TRACE START 10:32:18 05/11 ########################

SQL statement :

SELECT*FROM SCM1.TBL1,SCM1.TBL2 WHERE TBL1.C1=TBL2.C1 AND TBL1.C3 BETWEEN 1 A

ND 5

Total Time : 00:00:00(931)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(020)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 0/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 0/0/0/0

dsi number (access/total) : 0/1

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 10/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX2_DSI

dsi access (read/ins/del/upd) : 10/0/0/0

- 83 -

[2] SORT INSERT

sort name : SORT0002

sort type : ALL key

length(byte) : 12

record length(byte) : 12

record number : 10

------------------------------------------------------------------------------

Section No : 2

Section Time : 00:00:00(036)

------------------------------------------------------------------------------

[1] SORT SCAN

sort name : SORT0002

sort type : ALL

record number : 10

used memory(kb) : 64

file size(kb) : 0

run(number/capacity): 0/0

run merge : 0

[2] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 10/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 10/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 10/0/0/0

[3] SORT INSERT

sort name : SORT0001

sort type : ALL

key length(byte) : 4

record length(byte) : 120

record number : 10

------------------------------------------------------------------------------

Section No : 3

Section Time : 00:00:00(434)

------------------------------------------------------------------------------

[1] MERGE JOIN

result record number : 500

max duplicate number : 1

used memory(kb) : 0

1) TABLE ACCESS

table name : TBL2

table access (read/ins/del/upd) : 0/0/0/0

base dso name : TBL2_BASE_DSO

dso access (read/ins/del/upd) : 0/0/0/0

dsi number (access/total) : 0/1

index dso name : TBL2_IX1_DSO

dso access (read/ins/del/upd) : 551/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL2_IX1_DSI

dsi access (read/ins/del/upd) : 551/0/0/0

2) SORT SCAN

sort name : SORT0001

sort type : ALL

record number : 10

used memory(kb) : 64

file size(kb) : 0

run(number/capacity): 0/0

run merge : 0

[2] SORT INSERT

sort name : SORT0003

sort type : ALL

key length(byte) : 12

- 84 -

record length(byte) : 132

record number : 500

------------------------------------------------------------------------------

Section No : 4

Section Time : 00:00:00(215)

------------------------------------------------------------------------------

[1] SORT SCAN

sort name : SORT0003

sort type : ALL

record number : 500

used memory(kb) : 577

file size(kb) : 0

run(number/capacity): 0/0

run merge : 0

[2] TABLE ACCESS

table name : TBL2

table access (read/ins/del/upd) : 500/0/0/0

base dso name : TBL2_BASE_DSO

dso access (read/ins/del/upd) : 500/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL2_BASE_DSI

dsi access (read/ins/del/upd) : 500/0/0/0

[3] OUTPUT

record number : 500

############################### SQL TRACE END ################################

MERGE JOIN(ソートテーブルを利用してジョインする(ジョイン対象カラムに重複あり))

(1)インデックス検索と表データ取得を利用して得られたレコードを、ソートテーブルにINSERTする。

(2)検索範囲を生成できないのでINDEX ALL SCANを行う。

(3)(4)ソートテーブルとインデックスからジョインキーの昇順にレコードを取り出す。

(5) ソートマージ法でジョインを行う。

(6) TBL2のTIDでソートを行う。

- 85 -

(7) ソートからレコードを取り出し、表をTABLE KEY SCANして、結果データをアプリケーションに返却する。

[SQL性能情報の出力例]

###################### SQL TRACE START 13:41:42 05/11 ########################

SQL statement :

SELECT*FROM SCM1.TBL1,SCM1.TBL2 WHERE TBL1.C1=TBL2.C1 AND TBL1.C3 BETWEEN 1 A

ND 5

Total Time : 00:00:13(629)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(039)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 0/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 0/0/0/0

dsi number (access/total) : 0/1

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 10/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX1_DSI

dsi access (read/ins/del/upd) : 10/0/0/0

[2] SORT INSERT

sort name : SORT0002

sort type : ALL

key length(byte) : 12

record length(byte) : 12

record number : 10

------------------------------------------------------------------------------

Section No : 2

Section Time : 00:00:00(034)

------------------------------------------------------------------------------

[1] SORT SCAN

sort name : SORT0002

sort type : ALL

record number : 10

used memory(kb) : 64

file size(kb) : 0

run(number/capacity): 0/0

run merge : 0

[2] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 10/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 10/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 10/0/0/0

[3] SORT INSERT

sort name : SORT0001

sort type : ALL

key length(byte) : 4

record length(byte) : 24

record number : 10

------------------------------------------------------------------------------

Section No : 3

Section Time : 00:00:11(318)

------------------------------------------------------------------------------

[1] MERGE JOIN

result record number : 50000

max duplicate number : 5000

- 86 -

used memory(kb) : 32760

1) SORT SCAN

sort name : SORT0001

sort type : ALL

record number : 10

used memory(kb) : 64

file size(kb) : 0

run(number/capacity): 0/0

run merge : 0

2) TABLE ACCESS

table name : TBL2

table access (read/ins/del/upd) : 0/0/0/0

base dso name : TBL2_BASE_DSO

dso access (read/ins/del/upd) : 0/0/0/0

dsi number (access/total) : 0/1

index dso name : TBL2_IX1_DSO

dso access (read/ins/del/upd) : 50000/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL2_IX1_DSI

dsi access (read/ins/del/upd) : 50000/0/0/0

3) WORK INSERT SCAN

work name : WORK0004

record length(byte) : 12

used memory(kb) : 64

file size(kb) : 0

work process count (INSERT/SCAN) : 10/10

record number (INSERT/SCAN) : 2270/2270

total record number (INSERT/SCAN) : 22700/22700

[2] SORT INSERT

sort name : SORT0003

sort type : ALL

key length(byte) : 12

record length(byte) : 36

record number : 50000

------------------------------------------------------------------------------

Section No : 4

Section Time : 00:00:00(917)

------------------------------------------------------------------------------

[1] SORT SCAN

sort name : SORT0003

sort type : ALL

record number : 50000

used memory(kb) : 3142

file size(kb) : 3584

run(number/capacity): 2/21

run merge : 1

[2] TABLE ACCESS

table name : TBL2

table access (read/ins/del/upd) : 50000/0/0/0

base dso name : TBL2_BASE_DSO

dso access (read/ins/del/upd) : 50000/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL2_BASE_DSI

dsi access (read/ins/del/upd) : 50000/0/0/0

[3] OUTPUT

record number : 50000

############################### SQL TRACE END ################################

- 87 -

FETCH JOIN(ジョインされる側がインデックス)

(1) インデックス検索と表データ取得で取得したレコード取り出す。

(2) インデックスの検索範囲を作成し、INDEX TABLE SCANを行う。

(3) 結果データをアプリケーションに返却する。

[SQL性能情報の出力例]

###################### SQL TRACE START 13:05:13 05/11 ########################

SQL statement :

SELECT*FROM SCM1.TBL1,SCM1.TBL2 WHERE TBL1.C1=TBL2.C1 AND TBL1.C3=1

Total Time : 00:00:00(405)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(347)

------------------------------------------------------------------------------

[1] FETCH JOIN

result record number : 300

1) TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 10/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 10/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 10/0/0/0

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 10/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX2_DSI

dsi access (read/ins/del/upd) : 10/0/0/0

2) TABLE ACCESS

table name : TBL2

table access (read/ins/del/upd) : 300/0/0/0

base dso name : TBL2_BASE_DSO

dso access (read/ins/del/upd) : 300/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL2_BASE_DSI

dsi access (read/ins/del/upd) : 300/0/0/0

index dso name : TBL2_IX1_DSO

dso access (read/ins/del/upd) : 300/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL2_IX1_DSI

dsi access (read/ins/del/upd) : 300/0/0/0

- 88 -

[2] OUTPUT

record number : 300

############################### SQL TRACE END ################################

FETCH JOIN(ジョインされる側が実表)

(1) 制約アクセスモデルを利用して得られたレコードを取り出す。

(2) TBL2についてTABLE ALL SCANを行う。

(3) 結果データをアプリケーションに返却する。

[アクセスプランの出力例]

###################### SQL TRACE START 13:05:13 08/05 ########################

SQL statement :

SELECT/*ASSIST LEADING_TABLE(TBL1,TBL2)JOIN_RULE(FETCH)*/*FROM SCM1.TBL1,SCM1.

TBL2 WHERE TBL1.C2=TBL2.C2 AND TBL1.C2=1

Total Time : 00:00:00(405)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(347)

------------------------------------------------------------------------------

[1] FETCH JOIN

result record number : 300

1) TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 10/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 10/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 10/0/0/0

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 10/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX2_DSI

dsi access (read/ins/del/upd) : 10/0/0/0

2) TABLE ACCESS

table name : TBL2

table access (read/ins/del/upd) : 300/0/0/0

base dso name : TBL2_BASE_DSO

dso access (read/ins/del/upd) : 300/0/0/0

dsi number (access/total) : 1/10

base dsi name : TBL2_BASE_DSI

dsi access (read/ins/del/upd) : 300/0/0/0

[2] OUTPUT

record number : 300

############################### SQL TRACE END ################################

- 89 -

NESTED LOOP JOIN(実表を直接読み込んでジョインする)

(1) TBL1についてTABLE ALL SCANを行う。

(2) (1)のレコードごとに、TBL2についてTABLE ALL SCANを行う。

(3) 結果データをアプリケーションに返却する。

[SQL性能情報の出力例]

###################### SQL TRACE START 13:58:28 05/11 ########################

SQL statement :

SELECT*FROM SCM1.TBL1,SCM1.TBL2 WHERE TBL1.C1>TBL2.C1 AND TBL1.C2<10

Total Time : 00:00:02(285)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:02(285)

------------------------------------------------------------------------------

[1] NESTED LOOP JOIN

result record number : 1350

1) TABLE ACCESS

table name : TBL2

table access (read/ins/del/upd) : 3000/0/0/0

base dso name : TBL2_BASE_DSO

dso access (read/ins/del/upd) : 3000/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL2_BASE_DSI

dsi access (read/ins/del/upd) : 3000/0/0/0

2) TABLE ACCESS table name : TBL1

table access (read/ins/del/upd) : 300000/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 300000/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 300000/0/0/0

[2] OUTPUT

record number : 1350

############################### SQL TRACE END ################################

- 90 -

UPDATE文:探索

(1) インデックス検索と表データ取得により更新標的レコードを位置づける。

(上記の例では、インデックス検索と表データ取得のアクセスモデルを採用している)

(2) 表レコードを取得する。

(3) 表レコードのC3部分を更新する。

(4) 更新前のデータからインデックスの当該レコードを削除して、新しいレコードを挿入する。

[SQL性能情報の出力例]

###################### SQL TRACE START 14:58:58 05/11 ########################

SQL statement :

UPDATE SCM1.TBL1 SET C3='UPDATE'WHERE C1=1 AND C2<10

Total Time : 00:00:00(114)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(009)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 0/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 0/0/0/0

dsi number (access/total) : 0/1

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 49/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX1_DSI

dsi access (read/ins/del/upd) : 49/0/0/0

[2] SORT INSERT

sort name : SORT0001

sort type : ALL

key length(byte) : 12

record length(byte) : 12

record number : 49

------------------------------------------------------------------------------

Section No : 2

Section Time : 00:00:00(069)

------------------------------------------------------------------------------

[1] SORT SCAN

sort name : SORT0001

- 91 -

sort type : ALL

record number : 49

used memory(kb) : 64

file size(kb) : 0

run(number/capacity): 0/0

run merge : 0

[2] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 49/0/0/49

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 49/0/0/49

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 49/0/0/49

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 0/49/49/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX2_DSI

dsi access (read/ins/del/upd) : 0/49/49/0

[3] OUTPUT

record number : 0

############################### SQL TRACE END ################################

UPDATE文:位置づけ

(1) 現在カーソル位置のレコードをTABLE KEY SCANで位置づける。

(2) 表レコードを取得する。

(3) 表レコードのC3部分を更新する。

(4) 更新前のデータからインデックスの当該レコードを削除して、新しいレコードを挿入する。

[SQL性能情報の出力例]

###################### SQL TRACE START 14:59:53 05/11 ########################

SQL statement :

SELECT C4 FROM SCM1.TBL1 WHERE C1=1 AND C2<10

Total Time : 00:00:00(101)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(001)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 0/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 0/0/0/0

dsi number (access/total) : 0/1

index dso name : TBL1_IX1_DSO

- 92 -

dso access (read/ins/del/upd) : 49/0/0/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX1_DSI

dsi access (read/ins/del/upd) : 49/0/0/0

[2] SORT INSERT

sort name : SORT0001

sort type : ALL

key length(byte) : 12

record length(byte) : 12

record number : 49

------------------------------------------------------------------------------

Section No : 2

Section Time : 00:00:00(038)

------------------------------------------------------------------------------

[1] SORT SCAN

sort name : SORT0001

sort type : ALL

record number : 49

used memory(kb) : 64

file size(kb) : 0

run(number/capacity): 0/0

run merge : 0

[2] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 49/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 49/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 49/0/0/0

[3] OUTPUT

record number : 49

==============================================================================

UPDATE CURSOR / DELETE CURSOR INFORMATION

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(051)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 49/0/0/49

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 49/0/0/49

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 49/0/0/49

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 0/49/49/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX2_DSI

dsi access (read/ins/del/upd) : 0/49/49/0

############################### SQL TRACE END ################################

- 93 -

DELETE文:探索

(1) 表の全件検索により更新標的レコードを位置づける。

(2) 表レコードを取得する。

(3) 表レコードを削除する。

(4) 更新前のデータからインデックスの当該レコードを削除する。

[SQL性能情報の出力例]

###################### SQL TRACE START 15:22:58 05/11 ########################

SQL statement :

DELETE FROM SCM1.TBL1 WHERE C4<DATE'2000-01-01'

Total Time : 00:00:00(342)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(317)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 300/0/150/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 300/0/150/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 300/0/150/0

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 0/0/150/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX1_DSI

dsi access (read/ins/del/upd) : 0/0/150/0

index dso name : TBL1_IX2_DSO

dso access (read/ins/del/upd) : 0/0/150/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX2_DSI

dsi access (read/ins/del/upd) : 0/0/150/0

[2] OUTPUT

record number : 0

############################### SQL TRACE END ################################

- 94 -

DELETE文:位置づけ

(1) 現在カーソル位置のレコードをTABLE KEY SCANで位置づける。

(2) 表レコードを取得する。

(3) 表レコードを削除する。

(4) 更新前のデータからインデックスの当該レコードを削除する。

[SQL性能情報の出力例]

###################### SQL TRACE START 15:21:16 05/11 ########################

SQL statement :

SELECT C4 FROM SCM1.TBL1 WHERE C4<DATE'2000-01-01'

Total Time : 00:00:00(614)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(201)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 300/0/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 300/0/0/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 300/0/0/0

[2] OUTPUT

record number : 150

==============================================================================

UPDATE CURSOR / DELETE CURSOR INFORMATION

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(355)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 150/0/150/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 150/0/150/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 150/0/150/0

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 0/0/150/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX1_DSI

dsi access (read/ins/del/upd) : 0/0/150/0

index dso name : TBL1_IX2_DSO

dso access (read/ins/del/upd) : 0/0/150/0

- 95 -

dsi number (access/total) : 1/1

index dsi name : TBL1_IX2_DSI

dsi access (read/ins/del/upd) : 0/0/150/0

############################### SQL TRACE END ################################

INSERT文(挿入値リストを指定したINSERT文)

(1) 表のレコードを作成し、表に挿入する。

(2) インデックスのレコードを作成し、インデックスに挿入する。

[SQL性能情報の出力例]

###################### SQL TRACE START 15:40:38 05/11 ########################

SQL statement :

INSERT INTO SCM1.TBL1(C1,C2,C3,C4,C5)VALUES(1,1,'INSERT_REC',DATE'2000-01-10'

,1)

Total Time : 00:00:00(002)

==============================================================================

------------------------------------------------------------------------------

Section No : 1

Section Time : 00:00:00(002)

------------------------------------------------------------------------------

[1] TABLE ACCESS

table name : TBL1

table access (read/ins/del/upd) : 0/1/0/0

base dso name : TBL1_BASE_DSO

dso access (read/ins/del/upd) : 0/1/0/0

dsi number (access/total) : 1/1

base dsi name : TBL1_BASE_DSI

dsi access (read/ins/del/upd) : 0/1/0/0

index dso name : TBL1_IX1_DSO

dso access (read/ins/del/upd) : 0/1/0/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX1_DSI

dsi access (read/ins/del/upd) : 0/1/0/0

index dso name : TBL1_IX2_DSO

dso access (read/ins/del/upd) : 0/1/0/0

dsi number (access/total) : 1/1

index dsi name : TBL1_IX2_DSI

dsi access (read/ins/del/upd) : 0/1/0/0

[2] OUTPUT

record number : 0

############################### SQL TRACE END ################################

4.4 アドバイスを取得する

アドバイスの取得方法には、以下の3つがあります。

・ rdbexecsqlコマンドを使用して取得する

・ アプリケーションから取得する

- 96 -

・ RDBシステム単位に取得する

rdbexecsqlコマンドを使用してアクセスプランを取得する場合、または、アプリケーションから取得する場合は、“4.2 アクセ

スプランを取得する”を参照してください。

4.4.1 RDBシステム単位にアドバイスを取得する

RDBシステム単位にアドバイスを取得するには、システム用の動作環境ファイルに以下の実行パラメタを指定してくださ

い。

SQL_ADVISOR

【指定形式】

SQL_ADVISOR = ({ON | OFF},ディレクトリ名[,サイズ])

【実行パラメタの意味】

SQL文に対するアドバイスを出力するかどうかを指定します。省略した場合は、“OFF”が指定されたものとみなしま

す。アドバイスは、コンパイルしたときに出力します。アドバイスのないSQL文については情報を出力しません。SQL文が

32キロバイトを超える場合、先頭から32キロバイト分だけを出力します。

【パラメタの意味】

ON:

SQLアドバイザを利用する場合に指定します。

OFF:

SQLアドバイザを利用しない場合に指定します。

ディレクトリ名:

SQL文に対するアドバイスを専用のファイルに蓄積する場合に、ファイルの配置先ディレクトリを絶対パス名で記

述します。

Symfoware/RDBは、このディレクトリに以下のファイルを作成し、満杯を契機に循環利用します。

RDBシステム名_advice.log:

カレントのSQLアドバイザ出力ファイル

RDBシステム名_advice.old:

1世代前のSQLアドバイザ出力ファイル

ただし、RDBシステム名をつけない運用の場合は、以下のファイルを作成します。

advice.log:

カレントのSQLアドバイザ出力ファイル

advice.old:

1世代前のSQLアドバイザ出力ファイル

サイズ:

SQLアドバイザ出力ファイルの大きさを、64~65536の範囲で指定します。単位はキロバイトです。省略した場合

は、1024が指定されたものとみなします。

4.4.2 SQLアドバイザの取得内容

SQLアドバイザでは、アドバイスがある場合、またはASSIST指定が無効である場合、以下の情報を取得します。

・ コネクション情報

・ SQL文情報

・ アドバイス

- 97 -

コネクション情報

SQL文を実行したコネクション情報を表示します。

SQL文情報

アプリケーションで指定したSQL性能情報取得対象のSQL文を表示します。

アドバイス

以下の情報があれば、アドバイスとして表示します。

・ SQL文に対するアドバイス

・ 無効なASSIST指定に対するメッセージ

ASSIST指定のメッセージが出力された場合、以下の状態になるまでチューニングしてください。

・ ASSIST指定が有効になる

・ 意図したアクセスプランになる

4.4.3 SQLアドバイザの出力形式

SQLアドバイザは、以下の形式で出力します。

4.4.4 SQLアドバイザの出力例

SQLアドバイザの出力として、以下があります。

・ 表の全件検索

・ NESTED LOOP JOIN

・ 無効なASSIST指定

それぞれの例を、以下に示します。

表の全件検索

- 98 -

[SQLアドバイザの出力例]

##################### SQL ADVISOR START 15:50:50 05/10 #######################

Connection-Info:

172.31.61.21/21382/32

Input SQL statement:

SELECT*FROM SCM1.TBL1

Advice to an SQL statement:

JYP2401I 表の全件検索を行います.

############################## SQL ADVISOR END ###############################

NESTED LOOP JOIN

(1) TBL1についてTABLE ALL SCANを行う。

(2) (1)のレコードごとに、TBL2についてTABLE ALL SCANを行う。

(3) 結果データをアプリケーションに返却する。

[SQLアドバイザの出力例]

##################### SQL ADVISOR START 15:50:50 05/10 #######################

Connection-Info:

172.31.61.21/21382/32

Input SQL statement:

SELECT TBL2.C2 FROM SCM1.TBL1,SCM1.TBL2 WHERE TBL1.C1>TBL2.C1

AND TBL1.C2 = 1

Advice to an SQL statement:

JYP2402I ネスティドループジョインを行います.

############################## SQL ADVISOR END ###############################

無効なASSIST指定

TBL1に以下のインデックスDSOが定義されている場合、定義されていないIX3をUSE_INDEXに指定すると、メッセージ

を出力します。

インデックスのDSO名 構成列名

IX1 C1

IX2 C2

[SQLアドバイザの出力例]

##################### SQL ADVISOR START 15:50:50 12/21 #######################

Connection-Info:

172.31.61.21/21382/32

- 99 -

Input SQL statement:

SELECT /* ASSIST USE_INDEX(TBL1(IX3)) */ C2 FROM SCM1.TBL1 WHERE TBL1.C2 = 1

Advice to an SQL statement:

JYP2410I ASSIST要素“USE_INDEX”に指定されたインデックス“IX3”が定義されてい

ません.

############################## SQL ADVISOR END ###############################

4.5 最適化情報をチューニングする

Symfoware/RDBでは、 適化処理のための基礎情報を“ 適化情報”と呼びます。 適化情報には、実表のデータ量

(行数)、インデックスやB-木構造の階層数、および異なるキー値数などがあります。

rdbexecsqlコマンドを利用して、 適化情報を変更および表示することができます。 適化情報を操作するには、以下の

制御文があります。

・ SET STATISTICS文( 適化情報の変更)

・ PRINT STATISTICS文( 適化情報の表示)

4.5.1 最適化情報を変更する

例1

表の 適化情報を変更する

SQL>SET STATISTICS FOR TABLE SCM1.TBL1 RECORD(100)

例2

インデックスの 適化情報を変更する

SQL>SET STATISTICS FOR INDEX IX_DSO1 DIFFERENT KEY(10,12)

4.5.2 最適化情報を表示する

現在設定されている表およびインデックスの 適化情報の内容を、指定したファイルに出力する

SQL>PRINT STATISTICS FOR TABLE SCM1.TBL1 FILE /tmp/tbl.log

注意

SET STATISTICS文およびPRINT STATISTICS文は、RDBディクショナリへのアクセスを行うため内部でトランザクション

を制御します。このため、トランザクションを自由に制御するcオプションを指定した環境でSET STATISTICS文および

PRINT STATISTICS文は実行できません。その状態で実行するとエラーとなります。

rdbexecsqlコマンドにcオプションを指定せずに再起動し、SET STATISTICS文およびPRINT STATISTICS文を再実行

してください。

SET STATISTICS文およびPRINT STATISTICS文で開始されたトランザクションは、終了時に自動的にコミットされま

す。

SET STATISTICS文およびPRINT STATISTICS文の詳細については、“5.24 SET STATISTICS文”および“5.17 PRINTSTATISTICS文”を参照してください。

- 100 -

4.6 動作環境をチューニングする

rdbexecsqlコマンドを利用して、動作環境の変更およびチューニング情報の表示を行うことができます。動作環境の変更

および実行パラメタの表示は、以下のSQL性能情報制御文で行います。

・ CHANGE ENV文(動作環境の動的変更)

・ PRINT ENV文(実行パラメタの表示)

4.6.1 動作環境の動的変更

CHANGE ENV文により、現在の動作環境を動的に変更することができます。

CHANGE ENV文を実行すると、それ以前に実行した以下の制御文は無効になります。

・ ACCESS PLAN文

・ SET CATALOG文

・ SET SCHEMA文

・ SET SESSION AUTHORIZATION文

・ SET TRANSACTION文

・ SNAP文

・ SQL TRACE文

変更できる実行パラメタ

CHANGE ENV文で変更できる実行パラメタを以下に示します。

実行パラメタ 概要 備考

IGNORE_INDEXインデックスを使用しないアク

セスプランを選択するか否か

適化パラメタ

INACTIVE_INDEX_SCAN

非活性状態のインデックスDSIを含むインデックスを使用した

アクセスプランを選択するか否

JOIN_RULE ジョインする方法

JOIN_ORDER 結合表と他の表のジョイン順

SCAN_KEY_ARITHMETIC_RANGE

四則演算の検索範囲につい

て、インデックス範囲検索、ま

たは、クラスタキーの検索を行

うか否か

SCAN_KEY_CAST

探索条件のCASTオペランド

に指定した列でインデックスの

範囲検索、または、クラスタ

キー検索を行うか否か

SS_RATE述語ごとの検索範囲の選択率

の値

TID_SORTインデックス検索と表データ取

得のアクセスモデルでTIDソー

トを利用するか否か

TID_UNIONTIDユニオンマージのアクセス

モデルを有効にするか否か

- 101 -

実行パラメタ 概要 備考

USQL_LOCK

UPDATE文:探索または

DELETE文:探索の更新標的

レコードを位置づける部分の

占有モード

MAX_PARALLELデータベースを並列に検索す

る場合の多重度

PARALLEL_SCANアプリケーション単位またはコ

ネクション単位にデータベー

スを並列に検索するか否か

R_LOCK 排他の単位を行とする

SORT_HASHAREA_SIZE

ソート処理がレコードをハッシ

ングして格納するための領域

サイズ

SORT_MEM_SIZE作業用ソート領域として使うメ

モリサイズ

WORK_MEM_SIZE作業用テーブルとして使うメモ

リサイズ

上記の実行パラメタのうち、アクセスプランを変更するパラメタを、 適化パラメタと呼びます。実行パラメタの詳細につい

ては、“5.4 CHANGE ENV文”を参照してください。

4.6.2 実行パラメタの表示

PRINT ENV文は、SQL文実行時に指定されている動作環境の中で性能チューニングに関連する実行パラメタの指定内

容を表示する機能です。

実行パラメタの表示例

SQL>PRINT ENV

IGNORE_INDEX = NO

INACTIVE_INDEX_SCAN = YES

JOIN_RULE = AUTO

JOIN_ORDER = AUTO

MAX_PARALLEL = 4

PARALLEL_SCAN = NO

R_LOCK = YES

SCAN_KEY_ARITHMETIC_RANGE = YES

SCA_KEY_CAST = YES

SORT_HASHAREA_SIZE = 2097150

SORT_MEM_SIZE = 2112

SS_RATE = 0.200000,0.250000,0.500000,0.400000,0.000100

TID_SORT = YES

TID_UNION = YES

USQL_LOCK = EX

WORK_MEM_SIZE = 128

SQL>

4.7 ASSIST指定でアクセスプランを固定化する

適化情報を設定すれば 適なアクセスプランになりますが、すべてのSQL文に影響があります。

- 102 -

SQL文ごとにASSIST指定を使うと、そのSQL文だけについてのアクセスプランを固定化することができます。

ASSIST指定は、以下のSQL文のキーワード“SELECT”の直後に注釈として指定します。

・ カーソル指定

・ 単一行SELECT文

・ INSERT文の問合せ指定

・ 導出表

・ 副問合せ

・ rdbunlsqlコマンドの問合せ式

ASSIST指定は注釈なので、ASSIST指定にエラーがあった場合でも無視して動作します。

ASSIST指定が無効の理由のメッセージはアドバイスとして以下のファイルに出力しますので、メッセージに従って対処し

てください。

・ アクセスプラン

・ SQLアドバイザ

- 103 -

第5章 制御文リファレンス

本章では、rdbexecsqlコマンドで実行できるSQL文および各種制御文について説明します。

5.1 制御文一覧表

以下の表に、SQL文、および制御文の一覧を示します。

表5.1 制御文一覧表

項目 SQL文または制御文 機能

ータ

ース

CREATE DATABASE文(データベース定義) データベース名を登録します。

CREATE DBSPACE文(データベーススペース定

義)データベーススペースを作成します。

DROP DATABASE文(データベース削除文) データベース名を削除します。

DROP DBSPACE文(データベーススペース削除

文)データベーススペースを削除します。

CREATE SCHEMA文(スキーマ定義)表の集まりを管理する単位となるスキーマ

と、スキーマに含まれる実表およびビュー表

を定義します。

CREATE TABLE文(表定義)実表および一時表の実表名と表を構成す

る列の属性を定義します。

CREATE VIEW文(ビュー定義) 実表を基にビュー表を定義します。

CREATE PROCEDURE文(プロシジャルーチン

定義)プロシジャルーチンを定義します。

CREATE FUNCTION文(ファンクションルーチン

定義)

ファンクションルーチンを定義します。引数

のデータ型、処理結果のデータ型および

ファンクションルーチンの処理を行うプログ

ラムを指定します。

CREATE INDEX文(インデックス定義)インデックスのDSO 定義とインデックスのDSI定義を簡略化してインデックスを定義しま

す。

CREATE TRIGGER文(トリガ定義)データ操作に連動したほかの表へのデータ

操作を定義します。

CREATE SEQUENCE文(順序定義) 順序を定義します。

DROP SCHEMA文(スキーマ削除文) スキーマを削除します。

DROP TABLE文(表削除文) 表を削除します。

ALTER TABLE文(表定義変更文)表の定義を変更します。列定義追加、列定

義削除および表と列の注釈定義変更があり

ます。

DROP VIEW文(ビュー削除文) ビュー表を削除します。

DROP PROCEDURE文(プロシジャルーチン削除

文)プロシジャルーチンを削除します。

DROP INDEX文(インデックス削除文) インデックス定義を削除します。

DROP TRIGGER文(トリガ削除文) トリガを削除します。

SWAP TABLE文(表交換文) 指定された2 つの表のデータを交換します。

DROP SEQUENCE文(順序削除文) 順序を削除します。

- 104 -

項目 SQL文または制御文 機能

DROP FUNCTION文(ファンクションルーチン削

除文)ファンクションルーチンを削除します。

CREATE DSO文(表のDSO定義文)表のDSO(Data Structure Organization)を定

義します。

CREATE DSI文(表のDSI定義文)表のデータを格納する領域を、データベー

ススペースに割り付けるために、DSI(DataStructure Instance)を定義します。

CREATE DSO文(インデックスのDSO定義文) インデックスのDSO を定義します。

CREATE DSI文(インデックスのDSI定義文)表に付加するインデックスのデータを格納

する領域を、データベーススペースに割り付

けるために、DSI を定義します。

CREATE SCOPE文(スコープ定義文) データ操作の範囲を定義します。

DROP DSO文(DSO削除文)表およびインデックスのDSO 定義を削除し

ます。

DROP DSI文(DSI削除文) DSI 定義を削除します。

ALTER DSI文(DSI変更文)DSI の分割値の変更またはDSI の容量拡

張を行います。

DROP SCOPE文(スコープ削除文) スコープを削除します。

APPLY SCOPE文(スコープ適用文) スコープを表の利用者に適用します。

RELEASE SCOPE文(スコープ解除文) 適用されたスコープを解除します。

PRINT STATISTICS文現在設定されている 適化情報をファイル

に出力します。

SET STATISTICS文 データベースに 適化情報を設定します。

CREATE USER文(利用者定義文)データベースシステムにアクセスする利用

者を定義します。

DROP USER文(利用者削除文) 利用者の定義を削除します。

ALTER USER文(利用者変更文) 利用者の属性を変更します。

CREATE ROLE文(ロール定義文)ロールを定義します。ロール定義文は、ス

キーマ要素に含まれます。

DROP ROLE文(ロール削除文) ロールを削除します。

GRANT文 権限を定義します。

REVOKE文 権限を削除します。

SET ROLE文現行SQL セションに対してロールを有効に

します。

SET SYSTEM PARAMETER文SET SYSTEM PARAMETER 文では、セ

キュリティパラメタを設定します。

ータ

ース

SELECT文 表から値を取出します。

INSERT文 表に新しい行を追加します。

UPDATE文表に対して条件を満たす行の指定された列

を更新します。

DELETE文 表から条件を満たす行を削除します。

CALL文 プロシジャルーチンの呼出しを行います。

SET TRANSACTION文 トランザクションモードを切替えます。

- 105 -

項目 SQL文または制御文 機能

COMMIT文現行のデータベースの変更をすべて有効

にしてトランザクションを終了します。

ROLLBACK文現行のデータベースの変更をすべて無効

にしてトランザクションを終了します。

SET CATALOG文SQL文または制御文で対象となるデータ

ベース名を変更します。

SET ROLE文現行SQLセションに対してロールを有効に

します。

SET SCHEMA文SQL文または制御文で省略したスキーマ名

を変更します。

SET SESSION AUTHORIZATION文現行セションの対象となる利用者(認可識別

子)を変更します。

CONNECT文 コネクションを接続します。

ータ

ース

チュ

ニン

ACCESS PLAN文SQL文単位のアクセスプランの取得を制御

します。

SQL TRACE文SQL文単位の性能情報の取得を制御しま

す。

SNAP文SQL文単位のSNAP情報の取得を制御しま

す。

SET STATISTICS文表およびインデックスの 適化情報を変更

します。

PRINT STATISTICS文現在設定されている表およびインデックスの

適化情報の内容を、指定したファイルに

出力します。

CHANGE ENV文 現在の動作環境を変更します。

PRINT ENV文動作環境の中で性能チューニングに関連

するパラメタの指定内容を表示します。

ビス

LOG文SQL文の実行結果のログをファイルへ出力

します。

COLUMN文 定義されている表の列名を表示します。

COLUMN FORMAT文SQL文の実行結果の画面表示およびファイ

ル出力への表示幅を制御します。

PRINT文 SQL文の結果データの表示を制御します。

INFILE文ファイル中のSQL文を順次表示しながら対

話的に実行するか否かを問い合わせます。

HISTORY文過去に実行したSQL文の表示およびSQL文の実行を指定します。

HELP文rdbexecsqlコマンドのヘルプ画面を表示しま

す。

参照

データベースの構築で使用するSQL文の詳細については、“SQLリファレンス”を参照してください。

- 106 -

5.2 ACCESS PLAN文

機能

SQL文単位のアクセスプランの取得を制御する機能です。

記述形式

ACCESS PLAN ON ファイル名 [, [出力レベル][, [実行レベル][, [SQLアドバイザ出力レベル]]]]

ACCESS PLAN OFF

ON:

アクセスプランの取得を開始します。

OFF:

アクセスプランの取得を終了します。

ファイル名:

サーバ側の出力先ファイル名を絶対パスで指定します。指定されたファイルがすでに存在する場合は、情報を追加

して出力します。

出力レベル:

1|2(省略された場合は、2が指定されたものとみなして動作します。)

- 1:セクション情報のみ出力

- 2:セクション内の各エレメント詳細情報も出力

実行レベル:

EXE|NOEXE(省略された場合は、EXEが指定されたものとみなして動作します。)

- EXE:アクセスプラン取得とデータベースのアクセスを実行します。

- NOEXE:アクセスプランのみ取得します。

SQLアドバイザ出力レベル:

ADVICE|NOADVICE(省略された場合は、ADVICEが指定されたものとみなして動作します。)

- ADVICE:SQLアドバイザ(SQL文に対するアドバイスを出力)を利用します。

- NOADVICE:SQLアドバイザ(SQL文に対するアドバイスを出力)を利用しません。

一般規則

アクセスプラン取得開始(ACCESS PLAN ON ~)からアクセスプラン取得終了(ACCESS PLAN OFF)までに実行したSQL文のアクセスプランを取得します。

ACCESS PLAN文を実行すると、クライアント用の動作環境ファイルの実行パラメタ“ACCESS_PLAN”の指定は無視され

ます。

アクセスプラン取得対象のSQL文は次のSQL文です。これ以外のSQL文を実行してもアクセスプランは取得されません。

・ SELECT文

・ INSERT文

・ UPDATE文:探索

・ DELETE文:探索

・ CALL文

- 107 -

注意

呼び出したプロシジャルーチン中のSELECT文、INSERT文、UPDATE文およびDELETE文のアクセスプランを取得しま

す。

アクセスプランで取得する情報については、“4.2.4 アクセスプランの出力形式”を参照してください。

使用例

アクセスプラン取得開始

SQL>ACCESS PLAN ON /tmp/plan, 1, NOEXE

SQL>DELETE FROM SCM1.TBL1 WHERE COL1 = 1

アクセスプラン取得終了

SQL>ACCESS PLAN OFF

5.3 CALL文

機能

プロシジャルーチンの呼出しを行います。

一般規則

・ ルーチンの引数に動的パラメタを記述することはできません。定数を指定してください。

・ INOUT、OUT属性のパラメタがあるプロシジャルーチンは実行できません。

参照

詳細は、“SQLリファレンス”を参照してください。

使用例

SQL>CALL ROUTINE1( 10 )

5.4 CHANGE ENV文

機能

現在の動作環境を変更する機能です。

CHANGE ENVを実行すると、それ以前に実行した以下の制御文は無効になります。

・ ACCESS PLAN文

・ SET CATALOG文

・ SET SCHEMA文

・ SET SESSION AUTORIZATION文

・ SET TRANSACTION文

・ SNAP文

・ SQL TRACE文

- 108 -

また、トランザクションが継続中の場合は、CHANGE ENV文が実行されるとそのトランザクションは終了され、ロールバッ

クされます。トランザクションの扱いには注意してください。

記述形式

CHANGE ENV パラメタ指定[,パラメタ指定...]

パラメタ指定:

変更するパラメタを指定します。

一般規則

CHANGE ENV文により設定したパラメタの値は、rdbexecsqlコマンドを終了させるか、または再びCHANGE ENV文によ

り変更するまで有効です。

変更できるパラメタ一覧

IGNORE_INDEX:

インデックスを使用しないアクセスプランを選択するか否か

INACTIVE_INDEX_SCAN:

非活性状態のインデックスDSIを含むインデックスを使用したアクセスプランを選択するか否か

JOIN_RULE:

ジョインする方法

JOIN_ORDER:

結合表と他の表のジョイン順

MAX_PARALLEL:

データベースを並列に検索する場合の多重度

PARALLEL_SCAN:

アプリケーション単位またはコネクション単位にデータベースを並列に検索するか否か

R_LOCK:

排他の単位を行とします

SCAN_KEY_ARITHMETIC_RANGE:

四則演算の検索範囲について、インデックス範囲検索、または、クラスタキーの検索を行うか否か

SCAN_KEY_CAST:

探索条件のCASTオペランドに指定した列でインデックスの範囲検索、または、クラスタキー検索を行うか否か

SORT_HASHAREA_SIZE:

ソート処理がレコードをハッシングして格納するための領域のサイズ

SORT_MEM_SIZE:

作業用ソート領域として使うメモリサイズ

SS_RATE:

述語ごとの検索範囲の選択率の値

TID_SORT:

インデックス検索と表データ取得のアクセスモデルでTIDソートを利用するか否か

TID_UNION:

TIDユニオンマージのアクセスモデルを有効にするか否か

- 109 -

USQL_LOCK:

UPDATE文:探索またはDELETE文:探索の更新標的レコードを位置づける部分の占有モード

WORK_MEM_SIZE:

作業用テーブルとして使うメモリサイズ

上記のパラメタは、システム用の動作環境ファイル、クライアント用の動作環境ファイルおよびサーバ用の動作環境

ファイルに指定することができます。

注意

- IGNORE_INDEXおよびPARALLEL_SCANはシステム用の動作環境ファイルに記述することはできません。

- R_LOCKは、サーバ用の動作環境ファイルに記述することはできません。

参照

以下のパラメタに関する詳細は、“アプリケーション開発ガイド(共通編)”を参照してください。

- MAX_PARALLEL

- PARALLEL_SCAN

- R_LOCK

- SORT_MEM_SIZE

- WORK_MEM_SIZE

また、WebAdminまたはGUIでセットアップした場合、以下のパラメタは本節で説明しているパラメタの値と異なります。

- JOIN_ORDER

- R_LOCK

- USQL_LOCK

参照

WebAdminまたはGUIでセットアップした場合のパラメタの詳細については、“セットアップガイド”の“セットアップ時の

省略値”を参照してください。

注意

ASSIST指定を指定した場合、CHANGE ENV文または動作環境ファイルで設定した以下のパラメタよりもASSIST指定が優先されます。

- IGNORE_INDEX

- JOIN_RULE

- JOIN_ORDER

- SCAN_KEY_ARITHMETIC_RANGE

- SCAN_KEY_CAST

- SS_RATE

- TID_SORT

- 110 -

- TID_UNION

IGNORE_INDEX

指定形式

IGNORE_INDEX = ({YES | NO})

実行パラメタの意味

データベースを検索するときに、インデックスを使用しないアクセスプランを選択するか否かを指定します。データ

ウェアハウジングにおいて大量のデータを検索および集計する場合には、インデックスだけではデータが絞りきれ

ず、インデックスを使う分だけ無駄なオーバヘッドが発生することがあります。このような場合は、当パラメタにYESを指定することにより、表の全件検索または並列スキャンのアクセスモデルを採用します。省略値はNOです。

ただし、SQL文にASSIST指定のUSE_INDEXを指定した場合、ASSIST指定が優先され、IGNORE_INDEXの指

定に関わらず、ASSIST指定に指定されたインデックスを使用した検索を行います。

パラメタの意味

YES:

インデックスを使用しないアクセスプランを選択します。

NO:

インデックスが使用できるときは、インデックスを使用したアクセスプランを選択します。

INACTIVE_INDEX_SCAN

指定形式

INACTIVE_INDEX_SCAN = ({YES | NO})

実行パラメタの意味

データベースを検索するときに、非活性状態のインデックスDSIを含むインデックスを使用したアクセスプランを選

択するか否かを指定します。インデックスを非活性状態とし、一括更新処理でインデックスを更新しない高速なバッ

チ処理を行うアプリケーションの場合、本パラメタにNOを指定してください。YESが指定されている場合、バッチ処

理がエラーとなる場合があります。省略値はYESです。

パラメタの意味

YES:

非活性状態のインデックスDSIを含むインデックスを使用したアクセスプランを選択します。

NO:

非活性状態のインデックスDSIを含むインデックスを使用したアクセスプランを選択しません。

JOIN_RULE

指定形式

JOIN_RULE = ({AUTO | MERGE | FETCH})

実行パラメタの意味

ジョインする方法を指定します。省略値はAUTOです。

ただし、SQL文にASSIST指定のJOIN_RULEを指定した場合、ASSIST指定が優先され、JOIN_RULEの指定に

関わらず、ASSIST指定に指定されたジョイン方法に従います。

パラメタの意味

AUTO:

Symfoware/RDBが自動的に選択します。

MERGE:

マージジョインのアクセスモデルを優先します。

- 111 -

FETCH:

フェッチジョインのアクセスモデルを優先します。

JOIN_ORDER

指定形式

JOIN_ORDER = ({AUTO | INSIDE | OUTSIDE})

実行パラメタの意味

結合表と他の表をジョインする場合のジョイン順を指定します。省略値はINSIDEです。

ただし、SQL文にASSIST指定のLEADING_TABLEを指定した場合、ASSIST指定が優先され、JOIN_ORDERの指定に関わらず、ASSIST指定に指定されたジョイン順に従います。

パラメタの意味

AUTO:

Symfoware/RDBが自動的に選択します。

INSIDE:

結合表から先にジョインします。

OUTSIDE:

結合表の中に指定した表と結合表の外に指定した表から先にジョインします。

SCAN_KEY_ARITHMETIC_RANGE

指定形式

SCAN_KEY_ARITHMETIC_RANGE = ({YES | NO})

実行パラメタの意味

四則演算の検索範囲について、インデックス範囲検索やクラスタキーの検索を行います。省略値はYESです。

た だ し 、 SQL 文 に ASSIST 指 定 の USE_INDEX を 指 定 し た 場 合 、 ASSIST 指 定 が 優 先 さ れ 、

SCAN_KEY_ARITHMETIC_RANGEの指定に関わらず、ASSIST指定に指定されたインデックスを使用した検

索を行います。

パラメタの意味

YES:

四則演算の検索埴について、インデックス範囲検索、または、クラスタキーの検索を行う。

NO:

四則演算の検索埴について、インデックス範囲検索、または、クラスタキーの検索を行わない。

SCAN_KEY_CAST

指定形式

SCAN_KEY_CAST = ({YES | NO})

実行パラメタの意味

インデックス構成列やクラスタキーが、WHERE句またはON句のCASTに指定されてもインデックスの範囲検索や

クラスタキー検索を行います。省略値はYESです。

ただし、SQL文にASSIST指定のUSE_INDEXを指定した場合、ASSIST指定が優先され、SCAN_KEY_CASTの指定に関わらず、ASSIST指定に指定されたインデックスを使用した検索を行います。

パラメタの意味

YES:

探索条件のCASTオペランドに指定した列でインデックスの範囲検索、または、クラスタキー検索を行う。

NO:

探索条件に指定したインデックスキーまたは、クラスタキーで範囲検索を行う。

- 112 -

SORT_HASHAREA_SIZE

指定形式

SORT_HASHAREA_SIZE = (メモリサイズ)

実行パラメタの意味

ソート処理がレコードをハッシングして格納するための領域のサイズです。2112~2097150の範囲で指定します。

単位はキロバイトです。省略した場合は、メモリ上のすべてのレコードをハッシングして格納します。

SS_RATE

指定形式

SS_RATE = ([選択率1][,[選択率2][,[選択率3][,[選択率4][,[選択率5]]]]])

実行パラメタの意味

BETWEEN述語、比較述語、LIKE述語およびCONTAINS関数でインデックスを検索するとき、インデックスの検

索範囲の割合を指定します。小数点付きの小数(0≦n≦1)の範囲を指定します。値は、0以上1以下の小数を指

定してください。小数第6位まで指定できます。

ただし、SQL文にASSIST指定のUSE_INDEXを指定した場合、ASSIST指定が優先され、SS_RATEの割合に関

わらず、ASSIST指定に指定されたインデックスを使用した検索を行います。

パラメタの意味

選択率1:

BETWEEN述語を指定した場合のインデックスの検索範囲。省略値は、0.2

選択率2:

比較述語“>”、“>=”、と“<”、“<=”でインデックスの検索開始位置および検索終了位置の両方が指定されて

いる場合のインデックスの検索範囲。省略値は、0.25

選択率3:

比較述語“>”、“>=”、“<”、“<=”でインデックスの検索開始位置または検索終了のみが指定されている場合

のインデックスの検索範囲。省略値は、0.5

選択率4:

LIKE述語を指定した場合のインデックスの検索範囲。省略値は、0.4

選択率5:

CONTAINS関数を指定した場合のインデックスの検索範囲。省略値は、0.0001

TID_SORT

指定形式

TID_SORT = ({YES | NO})

実行パラメタの意味

インデックス検索と表データ取得のアクセスモデルにおいて、TIDソートを利用するか否かを指定します。省略値は

YESです。

ただし、SQL文にASSIST指定のFIRST_ROWSを指定した場合、ASSIST指定が優先され、TID_SORTの指定に

関わらず、TIDソートを利用しません。

パラメタの意味

YES:

TIDソートを利用します。

NO:

TIDソートを利用しません。

- 113 -

TID_UNION

指定形式

TID_UNION = ({YES | NO})

実行パラメタの意味

TIDユニオンマージのアクセスモデルを有効にするか否かを指定します。省略値はYESです。

ただし、SQL文にASSIST指定のUSE_INDEXを指定した場合、ASSIST指定が優先され、TID_UNIONの指定に

関わらず、ASSIST指定に指定されたインデックスを使用した検索を行います。

パラメタの意味

YES:

TIDユニオンマージのアクセスモデルを有効にします。TIDユニオンマージが効果的と判断した場合に選択し

ます。

NO:

TIDユニオンマージのアクセスモデルを有効にしません。

USQL_LOCK

指定形式

USQL_LOCK = ({SH | EX})

実行パラメタの意味

UPDATE文:探索およびDELETE文:探索において、更新レコードを検索するアクセスモデルの表の占有モード

を指定します。省略値はSHです。

パラメタの意味

SH:

更新標的レコードを検索するアクセスモデルで共用モードで表を占有します。

EX:

更新標的レコードを検索するアクセスモデルで非共用モードで表を占有します。

使用例

SQL>CHANGE ENV SORT_MEM_SIZE=(1024),R_LOCK=(YES)

5.5 COLUMN文

機能

定義されている表の列名を表示する機能です。

記述形式

COLUMN 表名

一般規則

表名は、表定義またはビュー定義で定義される名前です。表名を修飾するスキーマ名は省略できる場合があります。

参照

表定義の詳細、ビュー定義の詳細およびスキーマ名修飾の詳細は、“SQLリファレンス”を参照してください。

- 114 -

使用例

SQL>COLUMN SCM1.TBL1

INT_D

SMALLINT_D

CHAR_D

SQL>

5.6 COLUMN FORMAT文

機能

SQL文の実行結果の画面表示およびファイル出力への表示幅を制御する機能です。

記述形式

COLUMN FORMAT CHARMAX 表示幅

COLUMN FORMAT NCHARMAX 表示幅

COLUMN FORMAT BLOBMAX 表示幅

表示幅:

表示および出力させるバイト数を指定します。

一般規則

COLUMN FORMAT文の表示幅は実データの長さを指定します。表示する文字数の指定ではありませんので扱いには

注意してください。

COLUMN FORMAT CHARMAX 表示幅

CHAR型、VCHAR型の列を画面に表示するときの表示幅(バイト数)を指定します。指定されたバイト数までしか表示

されません。設定していない場合の省略値は100バイトです。

指定可能な表示幅の 小値は1バイト、 大値は32000バイトです。

COLUMN FORMAT NCHARMAX 表示幅

NCHAR型、NCHAR VARYING型の列を画面に表示するときの表示幅(バイト数)を指定します。指定されたバイト数

までしか表示されません。設定していない場合の省略値は100バイトです。

指定可能な表示幅の 小値は2バイト、 大値は32000バイトです。

COLUMN FORMAT BLOBMAX 表示幅

BLOB型の列を画面に表示するときの表示幅(バイト数)を指定します。指定されたバイト数までしか表示されません。

設定していない場合の省略値は1024バイトです。

指定可能な表示幅の 小値は1バイト、 大値は2147483647バイトです。

使用例

例1

CHAR型、VCHAR型の表示幅を16バイトにします。

SQL>COLUMN FORMAT CHARMAX 16

例2

NCHAR型、NVCHAR型の表示幅を16バイトにします。

SQL>COLUMN FORMAT NCHARMAX 16

例3

BLOB型の表示幅を128バイトにします。

- 115 -

SQL>COLUMN FORMAT BLOBMAX 128

5.7 COMMIT文

機能

現行のデータベースの変更をすべて有効にしてトランザクションを終了します。

一般規則

参照

詳細は、“SQLリファレンス”を参照してください。

使用例

SQL>COMMIT WORK

5.8 CONNECT文

機能

コネクションを接続します。

一般規則

参照

詳細は、“SQLリファレンス”を参照してください。

使用例

SQL>CONNECT TO 'USER_DB'

5.9 DELETE文

機能

表から条件を満たす行を削除します。

指定されたSQL文(DELETE文:探索)を被準備文として、PREPARE文およびEXECUTE文を実行します。

一般規則

SQL文内に動的パラメタを記述できません。定数を指定してください。

参照

詳細は、“SQLリファレンス”を参照してください。

使用例

SQL>DELETE FROM TBL1 WHERE INT_D = 1

- 116 -

5.10 HELP文

機能

rdbexecsqlコマンドのヘルプ画面を表示します。

使用例

SQL>HELP

rdbexecsql help 番号を入力してください

1: 終了方法

2: ファイル読み込み一括処理機能

3: 対話型処理

4: SET TRANSACTION文の指定方法

5: 最適化情報制御文

6: アクセスプラン制御文

7: 性能情報制御文

8: サービス機能制御文

9: 対話型ファイル読み込み機能(INFILE文)

10: 実行履歴表示機能(HISTORY文)

番号=>1

QUIT終了します.

SQL>

5.11 HISTORY文

機能

過去に実行したSQL文の表示および、SQL文の実行を指定します。ヒストリの表示はチューニングなどで実施した手順を

確認するときに使用できます。また、以前実行したSQL文を再実行する場合にSQL文を入力することなく実行できます。

一般規則

rdbexecsqlコマンド正常終了時に“rdbexecsql.hst”がカレントディレクトリに作成されます。

ヒストリの表示方法

SQL>HISTORY と入力すると、過去に実行したコマンドが30世代まで表示されます。

過去のコマンド実行方法

- SQL>のプロンプトに続いて“!番号”と入力すると、指定した番号のSQL文を実行します。

- 直前のコマンドを実行する場合は、SQL>!! と入力します。

- 任意の文字列で始まるコマンドを実行する場合は、SQL>!文字列と入力します。

- 記憶している世代の省略値は過去30世代までです。

記憶世代数を増やすには

rdbexecsqlコマンドの実行時にhオプションで世代数を指定します。指定できる値は10<n<100です。

使用例

ヒストリ表示

SQL>HISTORY

1:DELETE FROM SCM1.TBL1

2:INSERT INTO SCM1.TBL1(INT_D,SMALLINT_D) VALUES(1,11)

3:COMMIT WORK

4:SELECT * FROM SCM1.TBL1

- 117 -

5:UPDATE SCM1.TBL1 SET SMALLINT_D = 20 WHERE INT_D = 1

SQL>

5.12 INFILE文

機能

ファイル中のSQL文を順次表示しながら対話的に実行するか否かを問い合わせます。

記述形式

INFILE ファイル名

ファイル名:

入力元のファイル名を絶対パスで指定します。

一般規則

rdbexecsqlコマンドはファイル中のSQL文を順次表示しながら実行するか否かを問い合わせます。

EXECUTE?(y|n|q)=>

y:

表示されているSQL文を実行した後、次のSQL文を表示します。

n:

次のSQL文を表示します。EOFの場合は、SQL>プロンプトに戻ります。

q:

ファイル入力を中断して、SQL>プロンプトに戻ります。

入力ファイルの内容:

- ファイルに複数のSQL文を記述する場合は、各SQL文の 後に“;”が必要です。

- SQL文はトークンの箇所で改行してかまいません。

- “*”、“/”、“@”および“-”で始まる行はコメント行として読み飛ばします。

注意

入力ファイル中に“INFILE”文を記述するとエラーとなり、“JYP8100E 入力文は不当です.”が表示されます。

使用例

SQL>INFILE /tmp/sqlfile.txt

SELECT * FROM SCM1.TBL1

EXECUTE?(y|n|q)=>

5.13 INSERT文

機能

表に新しい行を追加します。

指定されたSQL文を被準備文として、PREPARE文およびEXECUTE文を実行します。

- 118 -

一般規則

SQL文内に動的パラメタを記述できません。定数を指定してください。

参照

詳細は、“SQLリファレンス”を参照してください。

使用例

SQL>INSERT INTO SCM1.TBL1 SELECT * FROM SCM1.TBL2 WHERE INT_D = 1

5.14 LOG文

機能

SQL文の実行結果のログをファイルへ出力します。

この文は、rdbexecsqlコマンド実行時にoオプションを指定するのと同じ意味です。

記述形式

LOG ON ファイル名

LOG OFF

ファイル名:

出力先のファイル名を絶対パスで指定します。指定されたファイルがすでに存在した場合は、情報を追加して出力し

ます。

一般規則

SQL文実行時にLOG文に指定したファイルで入出力エラーが起きた場合、入出力エラーのエラーメッセージを出力し

て、SQL文を継続します。この場合、ファイルで入出力エラーが起きた時点で、内部でLOG文の指定をOFFにしてSQL文を続行します。入出力エラー後のファイル出力は行いません。

LOG ON ファイル名

指定ファイルへの実行ログ出力を開始します。rdbexecsqlコマンド実行時にoオプションが指定されていた場合はエ

ラーとなります。

LOG OFF

指定ファイルへの実行ログ出力を終了します。

使用例

例1

実行ログ取得開始

SQL>LOG ON /tmp/exec.log

例2

実行ログ取得終了

SQL>LOG OFF

5.15 PRINT文

- 119 -

機能

SQL文の結果データの表示を制御する機能です。

記述形式

PRINT OFF

PRINT ON

PRINT RECORDMAX データ件数

データ件数:

表示するデータ件数を指定します。

一般規則

PRINT OFF

結果データの表示を抑止します。ただし、処理結果行数は表示します。

PRINT ON

結果データの表示の抑止を解除します。

PRINT RECORDMAX データ件数

結果データの表示件数を設定します。指定された件数以上は表示されません。ただし、処理結果行数は表示しま

す。

使用例

例1

画面表示をOFFにします。

SQL>PRINT OFF

SQL>SELECT * FROM SCM1.TBL1

Number of records:10

SQLSTATE:00000

SQLMSG:JYP2001I 正常に終了しました.

例2

画面表示をONにします。

SQL>PRINT ON

例3

表示するデータ件数を5件にします。

SQL>LOG OFF

SQL>PRINT RECORDMAX 5

SQL>SELECT INT_D FROM SCM1.TBL1

<<1>>

INT_D:1

<<2>>

INT_D:1

<<3>>

INT_D:1

<<4>>

INT_D:1

<<5>>

INT_D:1

Number of records:10

- 120 -

SQLSTATE:00000

SQLMSG:JYP2001I 正常に終了しました.

5.16 PRINT ENV文

機能

SQL文実行時に指定されている動作環境の中で性能チューニングに関連するパラメタの指定内容を表示する機能で

す。

記述形式

PRINT ENV

一般規則

IGNORE_INDEX:

インデックスを使用しないアクセスプランを選択するか否か

INACTIVE_INDEX_SCAN:

非活性状態のインデックスDSIを含むインデックスを使用したアクセスプランを選択するか否か

JOIN_RULE:

ジョインする方法

JOIN_ORDER:

結合表と他の表のジョイン順

MAX_PARALLEL:

データベースを並列に検索する場合の多重度

PARALLEL_SCAN:

アプリケーション単位またはコネクション単位にデータベースを並列に検索するか否か

R_LOCK:

排他の単位を行とします

SCAN_KEY_ARITHMETIC_RANGE:

四則演算の検索範囲について、インデックス範囲検索、または、クラスタキーの検索を行うか否か

SCAN_KEY_CAST:

探索条件のCASTオペランドに指定した列でインデックスの範囲検索、または、クラスタキー検索を行うか否か

SORT_HASHAREA_SIZE:

ソート処理がレコードをハッシングして格納するための領域のサイズ

SORT_MEM_SIZE:

作業用ソート領域として使うメモリサイズ(単位はキロバイト)

SS_RATE:

述語ごとの検索範囲の選択率の値

TID_SORT:

インデックス検索と表データ取得のアクセスモデルでTIDソートを利用するか否か

TID_UNION:

TIDユニオンマージのアクセスモデルを有効にするか否か

- 121 -

USQL_LOCK:

UPDATE文:探索、またはDELETE文:探索の更新標的レコードを位置づける部分の占有モード

WORK_MEM_SIZE:

作業用テーブルとして使うメモリサイズ(単位はキロバイト)

上記パラメタのうち、以下のパラメタに関する詳細は、“5.4 CHANGE ENV文”を参照してください。

・ IGNORE_INDEX

・ INACTIVE_INDEX_SCAN

・ JOIN_RULE

・ JOIN_ORDER

・ SCAN_KEY_ARITHMETIC_RANGE

・ SCAN_KEY_CAST

・ SORT_HASHAREA_SIZE

・ SS_RATE

・ TID_SORT

・ TID_UNION

・ USQL_LOCK

参照

上記パラメタのうち、以下の5つのパラメタに関する詳細は、“アプリケーション開発ガイド(共通編)”を参照してください。

・ MAX_PARALLEL

・ PARALLEL_SCAN

・ R_LOCK

・ SORT_MEM_SIZE

・ WORK_MEM_SIZE

表示されるパラメタ一覧

表示例

SQL>PRINT ENV

IGNORE_INDEX = NO

INACTIVE_INDEX_SCAN = YES

JOIN_RULE = AUTO

JOIN_ORDER = AUTO

MAX_PARALLEL = 4

PARALLEL_SCAN = NO

R_LOCK = YES

SCAN_KEY_ARITHMETIC_RANGE = YES

SCAN_KEY_CAST = YES

SORT_HASHAREA_SIZE = 2097150

SORT_MEM_SIZE = 2112

SS_RATE = 0.200000,0.250000,0.500000,0.400000,0.000100

TID_SORT = YES

TID_UNION = YES

- 122 -

USQL_LOCK = EX

WORK_MEM_SIZE = 128

5.17 PRINT STATISTICS文

機能

現在設定されている表およびインデックスの 適化情報の内容を、指定したファイルに出力します。

記述形式

表の最適化情報出力

PRINT STATISTICS FOR TABLE <表名> FILE ファイル名

インデックスの最適化情報出力

PRINT STATISTICS FOR INDEX <インデックスDSO名> FILE ファイル名

ファイル名:

サーバ側の出力先ファイル名を絶対パスで指定します。

一般規則

参照

ファイルの出力形式および出力される内容は“RDB運用ガイド(データベース定義編)”を参照してください。

使用例

例1

表の 適化情報出力

PRINT STATISTICS FOR TABLE SCM1.TBL1 FILE /tmp/tbl.log

例2

インデックスの 適化情報出力

SQL>PRINT STATISTICS FOR INDEX IX_DSO1 FILE /tmp/index.log

5.18 ROLLBACK文

機能

現行のデータベースの変更をすべて無効にしてトランザクションを終了します。

一般規則

参照

詳細は、“SQLリファレンス”を参照してください。

使用例

SQL>ROLLBACK WORK

- 123 -

5.19 SELECT文

機能

問合せ式の結果を出力します。

指定されたSQL文(動的SELECT文)を被準備文として、PREPARE文、OPEN文、FETCH文およびCLOSE文を実行しま

す。

一般規則

SQL文内に動的パラメタを記述できません。定数を指定してください。

参照

指定するSQL文の被準備文の詳細は、“SQLリファレンス”を参照してください。

使用例

SQL>SELECT USER_ID,USER_NAME FROM TBL1 WHERE GROUP_ID = 1

<<1>>

USER_ID :1000

USER_NAME:SYMFOWARE

<<2>>

USER_ID :1100

USER_NAME:FUJITSU

Number of records:2

SQLSTATE:00000

SQLMSG:JYP2001I 正常に終了しました.

5.20 SET CATALOG文

機能

SQL文または制御文で対象となるデータベース名を変更します。

一般規則

参照

詳細は、“SQLリファレンス”を参照してください。

使用例

SQL>SET CATALOG 'RDB2'

SQL>SELECT * FROM TBL1

5.21 SET ROLE文

機能

現行SQLセションに対してロールを有効にします。

一般規則

- 124 -

参照

詳細は、“SQLリファレンス”を参照してください。

使用例

SQL> SET ROLE 'ROLE1'

5.22 SET SCHEMA文

機能

SQL文または制御文で省略したスキーマ名を変更します。

一般規則

参照

詳細は、“SQLリファレンス”を参照してください。

使用例

SQL>SET SCHEMA 'SCH1'

SQL>SELECT * FROM TBL1

5.23 SET SESSION AUTHORIZATION文

機能

現行セションの対象となる利用者(認可識別子)を変更します。

現行セションの対象となる利用者とは、USER定数の値および権限チェックのチェック対象となる利用者を指します。

一般規則

USER定数の値は、ユーザ名のみの指定が可能です。Passwordの指定では、入力を促すプロンプトが表示されます。

参照

詳細は、“SQLリファレンス”を参照してください。

使用例

SQL>SET SESSION AUTHORIZATION 'USER1'

Password:

5.24 SET STATISTICS文

機能

表およびインデックスの 適化情報を変更します。

- 125 -

記述形式

表の最適化情報変更

SET STATISTICS FOR TABLE <表名>

RECORD (レコード件数) [PRINT ファイル名]

インデックスの最適化情報変更

SET STATISTICS FOR INDEX <インデックスDSO名>

DIFFERENT KEY(異なるキー値数[,異なるキー値数]…) [PRINT ファイル名]

ファイルより最適化情報変更

SET STATISTICS FOR FILE ファイル名[PRINT ファイル名]

ファイル名:

FILEで指定するファイル名は、サーバ側の入力ファイル名を絶対パスで指定します。PRINTで指定するファイル

名は、サーバ側の出力先ファイル名を絶対パスで指定します。

レコード件数:

格納するレコード件数を設定します。

異なるキー値数:

インデックスを構成する列に格納するデータについて、設定する値の種類の数を設定します。

一般規則

インデックスの 適化情報を変更する場合、設定されている表の 適化情報のデータを使用するため、表の 適化情

報設定後に変更してください。

参照

ファイルの形式は入出力情報とも共通です。ファイルの形式については、“RDB運用ガイド(データベース定義編)”を参

照してください。

本機能で設定する情報は、rdbddlexコマンドのSET STATISTICS文またはrdbupsコマンドで設定する情報に以下のよう

に対応します。

参照

SET STATISTICS文の詳細は、“SQLリファレンス”を参照してください。rdbupsコマンドの詳細は、“コマンドリファレンス”

を参照してください。

格納構造がSEQUENTIALまたはOBJECTの場合

rdbddlexコマンドまたはrdbupsコマンドで設定する情報:

本機能での設定内容

格納レコード件数:

指定されたレコード数を設定するDSI分割されている場合はDSI数で割った値を各DSIに設定します。

データ部の使用ページ数:

指定されたレコード数と定義内容を元に使用ページ数を算出し設定します。可変カラムを含む場合は 大長で

算出します。

格納構造がRANDOMの場合

rdbddlexコマンドまたはrdbupsコマンドで設定する情報:

本機能での設定内容

- 126 -

格納レコード件数:

指定されたレコード数を設定するDSI分割されている場合はDSI数で割った値を各DSIに設定します。

プライム部の使用ページ数:

指定されたレコード数と定義内容を元に使用ページ数を算出し設定します。可変カラムを含む場合は 大長で

算出します。

オーバフロー部の使用ページ数:

0を設定します。

オーバフロー部の平均ページ数:

0を設定します。

オーバフロー部の最大ページ数:

0を設定します。

格納構造がBTREEの場合

rdbddlexコマンドまたはrdbupsコマンドで設定する情報:

本機能での設定内容

データ部の使用ページ数:

表のレコード数と定義内容を元に使用ページ数を算出し設定します。

インデックスの高さ:

表のレコード数により自動的に値を設定します。

異なるキー値数:

指定された異なるキー値数を設定するDSI分割されている場合はDSI数で割った値を各DSIに設定します。

使用例

例1

表の 適化情報変更

SQL>SET STATISTICS FOR TABLE SCM1.TBL1 RECORD(100)

例2

インデックスの 適化情報変更

SQL>SET STATISTICS FOR INDEX IX_DSO1 DIFFERENT KEY(10,12)

例3

ファイルより 適化情報変更

SQL>SET STATISTICS FOR FILE /tmp/statistics.log

5.25 SET TRANSACTION文

機能

トランザクションモードを切替えます。

一般規則

参照

詳細は、“SQLリファレンス”を参照してください。

- 127 -

使用例

SQL>SET TRANSACTION READ ONLY, ISOLATION LEVEL READ COMMITTED

5.26 SNAP文

機能

rdbexecsqlコマンドの実行途中からSQL_SNAPの取得を制御する機能です。SQL_SNAPを取得したいSQL文をターゲッ

トに取得開始、取得終了を指定することができます。

記述形式

取得開始時のパラメタはクライアント用の動作環境ファイルの実行パラメタ“SQL_SNAP”と同じ指定です。

SNAP {ON/OFF} [スナップファイル名][,出力レベル][,繰り返し幅]

パラメタの意味はクライアント用の動作環境ファイルのSQL_SNAPと同じ指定です。

参照

動作環境ファイルに関する詳細は、“アプリケーション開発ガイド(共通編)”を参照してください。

一般規則

クライアント用の動作環境ファイルに“SQL_SNAP”の指定がある場合、本機能を実行するとクライアント用の動作環境ファ

イルの指定は無視されます。

クライアント用の動作環境ファイルに“SQL_SNAP”を指定してファイル名を省略した場合、またはSNAP文でファイル名

を省略した場合、ファイル名はrdbexecsqlコマンドを実行したディレクトリの“rdbexecsql.snp”となります。

使用例

例1

SNAPの取得開始

SQL>SNAP ON /tmp/sql.snp

例2

SNAPの取得終了

SQL>SNAP OFF

5.27 SQL TRACE文

機能

SQL文単位の性能情報の取得を制御する機能です。

記述形式

SQL TRACE ON 性能情報ファイル名 [,出力レベル]

SQL TRACE OFF

ON:

SQL文単位の性能情報の取得を開始します。

- 128 -

OFF:

SQL文単位の性能情報の取得を終了します。

性能情報ファイル名:

出力先のサーバ側のファイル名を絶対パスで指定します。指定されたファイルがすでに存在した場合は、情報を追

加して出力します。

出力レベル:

1|2(省略された場合は2が指定されたものとみなして動作します。)

1:

DSOごとに集計された性能情報を出力します。

- コマンド単位情報

- 資源情報(テーブル情報についてはDSOごと)

2:

DSI単位の情報までを出力します。実際にアクセスしたDSIの情報のみを出力します。

- コマンド単位情報

- セション情報

- 資源情報(テーブル情報についてはDSIごと)

一般規則

クライアント用の動作環境ファイルに“SQL_TRACE”の指定がある場合、本機能を実行するとクライアント用の動作環境

ファイルの指定は無視されます。

SQL TRACE文で取得する情報については、“4.3.5 SQL性能情報の取得内容”を参照してください。

使用例

SQL性能情報を取得する

SQL>SQL TRACE ON /tmp/trace.log

SQL>SELECT INT_D FROM SCM1.TBL1

~ データ表示

SQL性能情報の取得を終了する

SQL>SQL TRACE OFF

5.28 UPDATE文

機能

表に対して条件を満たす行の指定された列を更新します。

指定されたSQL文(UPDATE文:探索)を被準備文として、PREPARE文およびEXECUTE文を実行します。

一般規則

SQL文内に動的パラメタを記述できません。定数を指定してください。

参照

詳細は、“SQLリファレンス”を参照してください。

- 129 -

使用例

SQL>UPDATE TBL1 SET COL1 = 1, COL2 = 'AA'

- 130 -

索 引[A]

ACCESS_PLAN.......................................................................37ACCESS PLAN文..................................................................107ASSIST指定でアクセスプランを固定化する.........................102

[C]CALL文..................................................................................108CHANGE ENV文..................................................................108COLUMN FORMAT文.........................................................115COLUMN文...........................................................................114COMMIT文............................................................................116CONNECT文.........................................................................116

[D]DELETEエレメントの詳細情報................................................49DELETE文.............................................................................116

[F]FETCH JOIN実行エレメント....................................................72

[G]GROUPINGエレメントの詳細情報..........................................51GROUPING実行エレメント......................................................73

[H]HELP文..................................................................................117HISTORY文...........................................................................117

[I]IGNORE_INDEX...................................................................111INACTIVE_INDEX_SCAN .................................................111INFILE文................................................................................118INSERTエレメントの詳細情報.................................................48INSERT文..............................................................................118

[J]JOIN_ORDER........................................................................112JOIN_RULE...........................................................................111JOINエレメント(MERGE JOIN、FETCH JOINおよびNESTEDLOOP JOIN)の詳細情報.........................................................46

[L]LOG文....................................................................................119

[M]MERGE JOIN実行エレメント...................................................71

[N]NESTED LOOP JOIN実行エレメント......................................73

[O]OUTPUTエレメントの詳細情報...............................................50OUTPUT実行エレメント...........................................................74

[P]PRINT ENV文.......................................................................121PRINT STATISTICS文.........................................................123PRINT文.................................................................................119

[R]rdbexecsqlコマンドからの利用.................................................11rdbexecsqlコマンドで扱うSQL文.........................................13,15rdbexecsqlコマンドで扱うSQL文の範囲..................................13rdbexecsqlコマンドの排他について.........................................26rdbexecsqlコマンドの利用形態................................................12rdbexecsqlコマンドの利用方法................................................11rdbexecsqlコマンドを使用してSQL_SNAP情報を取得する.....56rdbexecsqlコマンドを使用してアクセスプランを取得する.......37rdbexecsqlコマンドを使用して実行時のSQL性能情報を取得する

..................................................................................................56RDBシステム単位にアドバイスを取得する.............................97ROLLBACK文.......................................................................123

[S]SCAN_KEY_ARITH.............................................................112SCAN_KEY_CAST...............................................................112SCANエレメントの詳細情報....................................................43SELECT文..............................................................................124SET CATALOG文.................................................................124SET ROLE文..........................................................................124SET SCHEMA文...................................................................125SET SESSION AUTHORIZATION文..................................125SET STATISTICS文..............................................................125SET TRANSACTION文........................................................127SNAP文..................................................................................128SORT_HASHAREA_SIZE....................................................113SORT INSERT SCAN実行エレメント......................................69SORT INSERT実行エレメント.................................................67SORT SCAN実行エレメント.....................................................68SQL_ADVISOR.......................................................................97SQL_SNAP..............................................................................57SQL_TRACE............................................................................57SQL TRACE文.......................................................................128SQLアドバイザの出力形式......................................................98SQLアドバイザの出力例..........................................................98SQLアドバイザの取得内容......................................................97SQLサーバ名...........................................................................11SQLサーバ名を指定して起動する..........................................11SQL性能情報の出力形式.......................................................58SQL性能情報の出力例...........................................................75SQL性能情報の取得内容.......................................................58SQL性能情報の表現...............................................................59SQL性能情報を取得する........................................................56SQL文情報.....................................................................58,62,98SQL文でのエラー発生時の対処............................................22SQL文の実行結果を画面表示する........................................33SQL文の動作確認を行う.........................................................33SS_RATE...............................................................................113Symfoware/RDBが 適化したSQL文....................................38Symfoware/SQLTOOLの概要...................................................1Symfoware/SQLTOOLの起動.................................................11Symfoware/SQLTOOLの機能...................................................1Symfoware/SQLTOOLの停止.................................................13

- 131 -

Symfoware/SQLTOOLの適用範囲...........................................5Symfoware/SQLTOOLの使用方法...........................................9

[T]TABLE ACCESS実行エレメント..............................................64TID_SORT.............................................................................113TID_UNION...........................................................................114TRIGGER EXECUTIONエレメントの詳細情報......................52TRIGGER EXECUTION実行エレメント.................................74

[U]UPDATEエレメントの詳細情報...............................................50UPDATE文............................................................................129USQL_LOCK.........................................................................114

[W]WORK INSERT SCAN実行エレメント....................................70WORK INSERT実行エレメント...............................................69WORK SCAN実行エレメント...................................................70

[あ]アクセスシーケンス...................................................................38アクセスプランの出力形式.......................................................39アクセスプランの出力例...........................................................53アクセスプランの取得.................................................................3アクセスプランの取得内容.......................................................38アクセスプランを取得する........................................................36アドバイス............................................................................38,98アドバイスを取得する...............................................................96アプリケーション開発時...........................................................34アプリケーション開発を支援する.............................................30アプリケーションからSQL_SNAP情報を取得する..................57アプリケーションからSQL性能情報を取得する......................57アプリケーションからアクセスプランを取得する......................37アプリケーションからの利用.....................................................29エレメント情報...........................................................................43

[か]格納されているデータの確認を行う........................................32環境設定....................................................................................9業務への機能追加時..............................................................36結果表示制御............................................................................5コネクション情報.......................................................................98コマンドヘルプ...........................................................................5

[さ]適化情報の変更・表示..........................................................4適化情報をチューニングする............................................100適化情報を表示する..........................................................100適化情報を変更する..........................................................100適化パラメタ.......................................................................102

サービス機能..............................................................................4実行エレメント情報..............................................................58,63実行動作環境..........................................................................38実行パラメタの表示................................................................102実行履歴表示............................................................................5出力形式..................................................................................15出力メッセージと対処..............................................................26処理を中断する場合................................................................28

制御文一覧表........................................................................104制御文リファレンス.................................................................104性能検証チューニング時.........................................................35性能情報の取得........................................................................4セクション情報................................................................41,58,63

[た]対話型......................................................................................12対話型ファイル読込み...............................................................5チューニング情報の変更・表示.................................................4データの表示形式...................................................................16データ表示範囲.......................................................................16データベース構築時................................................................34データベースのチューニング機能............................................3データベースのチューニング作業..........................................34データベースを構築する.........................................................30データベースを操作する.........................................................31データベースをチューニングする............................................34動作環境..................................................................................52動作環境の動的変更............................................................101動作環境をチューニングする................................................101トランザクション制御.................................................................19

[は]引数による可変要素の指定....................................................21表示幅制御................................................................................5ファイル出力指定.......................................................................4ファイル読込み.........................................................................13複数行指定...........................................................................5,20

[ま]文字コードの指定....................................................................14

[や]ユーザ名を指定して起動する.................................................12

[ら]列名表示....................................................................................4ローカルアクセス......................................................................11

- 132 -