機能
現在の動作環境を変更する機能です。
CHANGE ENVを実行すると、それ以前に実行した以下の制御文は無効になります。
ACCESS PLAN文
SET CATALOG文
SET SCHEMA文
SET SESSION AUTORIZATION文
SET TRANSACTION文
SNAP文
SQL TRACE文
また、トランザクションが継続中の場合は、CHANGE ENV文が実行されるとそのトランザクションは終了され、ロールバックされます。トランザクションの扱いには注意してください。
記述形式
CHANGE ENV パラメタ指定[,パラメタ指定...]
変更するパラメタを指定します。
一般規則
CHANGE ENV文により設定したパラメタの値は、rdbexecsqlコマンドを終了させるか、または再びCHANGE ENV文により変更するまで有効です。
動作環境パラメタの指定の優先順位
動作環境の設定項目の中には、システム用の動作環境ファイル、クライアント用の動作環境ファイルおよびサーバ用の動作環境ファイルで重複して指定できるパラメタがあります。優先順位は、以下のとおりです。
参考
データベース簡単運用の場合には、Symfoware Severのインストール時に、システム用の動作環境として最適な環境が設定されるため、チューニングの必要がありません。よって、システム用の動作環境ファイルは、作成不要です。
サーバ用の動作環境ファイル
クライアント用の動作環境ファイル
システム用の動作環境ファイル
分類 | 実行パラメタ | 概要 | 優先順位 | ||
---|---|---|---|---|---|
1 | 2 | 3 | |||
SV | CL | SY | |||
最適化パラメタ | WHERE句にブール演算子“OR”、または行値構成子を指定した場合、TIDユニオンマージのアクセスプランのみを作成するか否か | ○ | ○ | ○ | |
導出表を絞り込む探索条件を指定した場合、その探索条件を導出表のWHERE句に移動するか否か | ○ | ○ | ○ | ||
インデックスを使用しないアクセスプランを選択するか否か | ○ | ○ | - | ||
非活性状態のインデックスDSIを含むインデックスを使用したアクセスプランを選択するか否か | ○ | ○ | ○ | ||
結合表と他の表のジョイン順 | ○ | ○ | ○ | ||
ジョインする方法 | ○ | ○ | ○ | ||
インデックス、クラスタキー、または分割キーの検索範囲の最大数 | ○ | ○ | ○ | ||
最適化情報を設定していない場合、ジョイン順をV5以前と同じにするか否か | ○ | ○ | ○ | ||
四則演算の検索範囲について、インデックス範囲検索、または、クラスタキーの検索を行うか否か | ○ | ○ | ○ | ||
探索条件のCASTオペランドに指定した列でインデックスの範囲検索、または、クラスタキー検索を行うか否か | ○ | ○ | ○ | ||
SQL_ADVISOR | SQL文に対するアドバイスを出力するか否か | - | - | ○ | |
述語ごとの検索範囲の選択率の値 | ○ | ○ | ○ | ||
インデックス検索と表データ取得のアクセスモデルTIDソートを利用するか否か | ○ | ○ | ○ | ||
TIDユニオンマージのアクセスモデルを有効にするか否か | ○ | ○ | ○ | ||
UPDATE文:探索またはDELETE文:探索の更新標的レコードを位置づける部分の占有モード | ○ | ○ | ○ | ||
並列クエリ | MAX_PARALLEL | データベースを並列に検索する場合の多重度 | ○ | ○ | ○ |
PARALLEL_SCAN | アプリケーション単位またはコネクション単位にデータベースを並列に検索するか否か | ○ | ○ | - | |
排他 | R_LOCK | 排他の単位を行とする | - | ○ | ○ |
作業領域 | ソート処理がレコードをハッシングして格納するための領域サイズ | ○ | ○ | ○ | |
SORT_MEM_SIZE | 作業用ソート領域として使うメモリサイズ | ○ | ○ | ○ | |
WORK_MEM_SIZE | 作業用テーブルとして使うメモリサイズ | ○ | ○ | ○ |
SV:サーバ用の動作環境ファイルへの指定が可能であるか否かを表します。
CL:クライアント用の動作環境ファイルへの指定が可能であるか否かを表します。
SY:システム用の動作環境ファイルへの指定が可能であるか否かを表します。
○:指定可
-:指定不可
注)データベース簡単運用の場合は、指定できません。
参照
以下のパラメタに関する詳細は、“アプリケーション開発ガイド(埋込みSQL編)”を参照してください。
MAX_PARALLEL
PARALLEL_SCAN
R_LOCK
SORT_MEM_SIZE
WORK_MEM_SIZE
以下のパラメタに関する詳細は、“セットアップガイド”を参照してください。
SQL_ADVISOR
また、WebAdminまたはGUIでセットアップした場合、以下のパラメタは本節で説明しているパラメタの値と異なります。
JOIN_ORDER
R_LOCK
USQL_LOCK
参照
WebAdminまたはGUIでセットアップした場合のパラメタの詳細については、“セットアップガイド”の“セットアップ時の省略値”を参照してください。
注意
ASSIST指定を指定した場合、CHANGE ENV文または動作環境ファイルで設定した以下のパラメタよりもASSIST指定が優先されます。
CHOOSE_TID_UNION
IGNORE_INDEX
JOIN_RULE
JOIN_ORDER
SAME_COST_JOIN_ORDER
SCAN_KEY_ARITHMETIC_RANGE
SCAN_KEY_CAST
SS_RATE
TID_SORT
TID_UNION
CHOOSE_TID_UNION = ({YES | NO})
SQL文のWHERE句にブール演算子“OR”を指定した場合、V10.1.0以前は、TIDユニオンマージのアクセスパスのみ作成されましたが、V11.0.0以降では、TIDユニオンマージに加えて、インデックス検索、または、インデックス検索と表データ取得のアクセスプランが作成されます。ほとんどの場合、インデックス検索の方がSQL文のレスポンスが良いのですが、データの分布によっては表に対するI/O効率の高いTIDユニオンマージの方が良い場合もあります。どちらのアクセスプランを選択するかは、Symfoware/RDBにより自動的に決定されますが、最適化情報を設定しない運用の場合はこの選択を誤ってしまい、V11.0.0以降、まれにSQL文のレスポンスが悪くなることがあります。このような場合は、当パラメタにYESを指定して、V10.1.0以前と同様のアクセスプランとしてください。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
CHOOSE_TID_UNION = (NO)
以下のいずれかの場合、TIDユニオンマージのアクセスプランのみを作成します(V10.1.0以前のアクセスプラン)。
-WHERE句にブール演算子”OR”を指定している場合
-WHERE句に行値構成子を指定している場合
以下のいずれかの場合、TIDユニオンマージのアクセスプランとインデックス検索のアクセスプランを作成し、効率の良いアクセスプランをSymfoware/RDBが自動的に選択します。
-WHERE句にブール演算子”OR”を指定している場合
-WHERE句に行値構成子を指定している場合
GROUP_COL_COND_MOVE = ({YES | NO})
V6以前のSymfoware Serverからバージョンアップした場合、最適化情報を設定しない運用では、まれにSQL文のレスポンスが悪くなることがあります。このような場合は、本パラメタにNOを指定して、V6以前のアクセスプランを選択します。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
GROUP_COL_COND_MOVE = (YES)
以下のいずれかの場合、導出表を絞り込む条件を導出表内に移動させる(V7以降のアクセスプラン)。
-導出表にGROUP BY句、HAVING句または集合関数を指定している場合。
-導出表の選択リストに列指定以外を指定している場合。
以下のいずれかの場合、導出表を絞り込む条件を導出表内に移動させない(V6以前のアクセスプラン)。
-導出表にGROUP BY句、HAVING句または集合関数を指定している場合。
-導出表の選択リストに列指定以外を指定している場合。
IGNORE_INDEX = ({YES | NO})
データベースを検索する時に、インデックスを使用せずにデータベースにアクセスするか否かを指定します。データウェアハウジングにおいて大量のデータを検索および集計する場合には、インデックスだけではデータが絞りきれず、インデックスを使う分だけ無駄なオーバヘッドが発生することがあります。このような場合は、当パラメタにYESを指定することにより、表の全件検索または並列スキャンのアクセスモデルを採用します。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
IGNORE_INDEX = (NO)
ただし、SQL文にASSIST指定のUSE_INDEXを指定した場合、ASSIST指定が優先され、IGNORE_INDEXの指定に関わらず、ASSIST指定に指定されたインデックスを使用した検索を行います。
インデックスを使用しないアクセスモデルを選択する。
インデックスが使用できる時は、インデックスを使用したアクセスモデルを選択する。
INACTIVE_INDEX_SCAN = ({YES | NO})
データベースを検索する時に、非活性状態のインデックスDSIを含むインデックスを使用したアクセスプランを選択するか否かを指定します。インデックスを非活性状態とし、一括更新処理でインデックスを更新しない高速なバッチ処理を行うアプリケーションの場合、本パラメタにNOを指定してください。YESが指定されている場合、バッチ処理がエラーとなる場合があります。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
INACTIVE_INDEX_SCAN = (YES)
非活性状態のインデックスDSIを含むインデックスを使用したアクセスプランを選択する。
非活性状態のインデックスDSIを含むインデックスを使用したアクセスプランを選択しない。
JOIN_ORDER = ({AUTO | INSIDE | OUTSIDE})
結合表と他の表をジョインする場合のジョイン順を指定します。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
JOIN_ORDER = (INSIDE)
データベース簡単運用で、いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合は、以下の値が設定されます。
JOIN_ORDER = (AUTO)
ただし、SQL文にASSIST指定のLEADING_TABLEを指定した場合、ASSIST指定が優先され、JOIN_ORDERの指定に関わらず、ASSIST指定に指定されたジョイン順に従います。
Symfoware/RDBが自動的に選択する。
結合表から先にジョインする。
結合表の中に指定した表と結合表の外に指定した表から先にジョインする。
JOIN_RULE = ({AUTO | MERGE | FETCH})
ジョインする方法を指定します。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
JOIN_RULE = (AUTO)
ただし、SQL文にASSIST指定のJOIN_RULEを指定した場合、ASSIST指定が優先され、JOIN_RULEの指定に関わらず、ASSIST指定に指定されたジョイン方法に従います。
Symfoware/RDBが自動的に選択する。
マージジョインのアクセスモデルを優先する。
フェッチジョインのアクセスモデルを優先する。
MAX_SCAN_RANGE = (検索範囲数)
インデックス、クラスタキー、または分割キーについて検索範囲を作成する場合の最大数を指定します。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
MAX_SCAN_RANGE = (1000)
1~2147483647の範囲で指定します。
SAME_COST_JOIN_ORDER = ({REVERSE| ORDER})
JOIN_ORDERパラメタにINSIDEを指定するか、省略し、最適化情報を設定しない運用の場合、まれにSQL文のレスポンスが悪くなることがあります。このような場合、本パラメタにREVERSEを指定して、V5以前のジョイン順を選択します。
最適化処理は、最適化情報で処理手順のコストを見積もり、最適な処理手順を選びます。最適化情報を設定していない場合、どのジョイン順も同じコストになることがあります。この場合、V5以前は、WHERE句の表を結合する探索条件の記述の逆順でしたが、V6以降は、記述順になります。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
SAME_COST_JOIN_ORDER = (ORDER)
ただし、SQL文にASSIST指定のLEADING_TABLEを指定した場合、ASSIST指定が優先され、SAME_COST_JOIN_ORDERの指定に関わらず、ASSIST指定に指定されたジョイン順に従います。
JOIN_ORDERパラメタにINSIDEを指定するか、省略し、最適化情報を設定しない運用の場合、WHERE句の表を結合する探索条件の記述の逆順にジョインするアクセスプランを選択する(V5以前のアクセスモデル)。
JOIN_ORDERパラメタにINSIDEを指定するか、省略し、最適化情報を設定しない運用の場合、WHERE句の表を結合する探索条件の記述順にジョインするアクセスプランを選択する(V6以降のアクセスモデル)。
SCAN_KEY_ARITHMETIC_RANGE = ({YES | NO})
四則演算の検索範囲について、インデックス範囲検索、または、クラスタキーの検索を行うか否かを指定します。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
SCAN_KEY_ARITHMETIC_RANGE = (YES)
ただし、SQL文にASSIST指定のUSE_INDEXを指定した場合、ASSIST指定が優先され、SCAN_KEY_ARITHMETIC_RANGEの指定に関わらず、ASSIST指定に指定されたインデックスを使用した検索を行います。
四則演算の検索値について、インデックス範囲検索、または、クラスタキーの検索を行います。
四則演算の検索値について、インデックス範囲検索、または、クラスタキーの検索を行いません。
SCAN_KEY_CAST = ({YES | NO})
探索条件のCASTオペランドに指定した列でインデックスの範囲検索、または、クラスタキー検索を行うか否かを指定します。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
SCAN_KEY_CAST = (YES)
ただし、SQL文にASSIST指定のUSE_INDEXを指定した場合、ASSIST指定が優先され、SCAN_KEY_CASTの指定に関わらず、ASSIST指定に指定されたインデックスを使用した検索を行います。
探索条件のCASTオペランドに指定した列でインデックスの範囲検索、または、クラスタキー検索を行います。
探索条件に指定したインデックスキーまたは、クラスタキーで範囲検索を行います。
SS_RATE = ([選択率1][,[選択率2][,[選択率3][,[選択率4][,[選択率5]]]]])
BETWEEN述語、比較述語、LIKE述語およびCONTAINS関数でインデックスを検索する時、インデックスの検索範囲の割合を0以上1以下の小数で指定します。値は、小数第6位まで指定できます。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
SS_RATE = (0.2,0.25,0.5,0.4,0.0001)
ただし、SQL文にASSIST指定のUSE_INDEXを指定した場合、ASSIST指定が優先され、SS_RATEの割合に関わらず、ASSIST指定に指定されたインデックスを使用した検索を行います。
BETWEEN述語を指定した場合のインデックスの検索範囲。省略した場合は、0.2が指定されたものとみなします。
比較述語“>”、“>=”、と“<”、“<=”でインデックスの検索開始位置および検索終了位置の両方が指定されている場合のインデックスの検索範囲。省略した場合は、0.25が指定されたものとみなします。
比較述語“>”、“>=”、“<”、“<=”でインデックスの検索開始位置または検索終了のみが指定されている場合のインデックスの検索範囲。省略した場合は、0.5が指定されたものとみなします。
LIKE述語を指定した場合のインデックスの検索範囲。省略した場合は、0.4が指定されたものとみなします。
CONTAINS関数を指定した場合のインデックスの検索範囲。省略した場合は、0.0001が指定されたものとみなします。
TID_SORT = ({YES | NO})
インデックス検索と表データ取得のアクセスモデルにおいて、TIDソートを利用するか否かを指定します。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
TID_SORT = (YES)
ただし、SQL文にASSIST指定のFIRST_ROWSを指定した場合、ASSIST指定が優先され、TID_SORTの指定に関わらず、TIDソートを利用しません。
TIDソートを利用します。
TIDソートを利用しません。
TID_UNION = ({YES | NO})
TIDユニオンマージのアクセスモデルを有効にするか否かを指定します。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
TID_UNION = (YES)
ただし、SQL文にASSIST指定のUSE_INDEXを指定した場合、ASSIST指定が優先され、TID_UNIONの指定に関わらず、ASSIST指定に指定されたインデックスを使用した検索を行います。
TIDユニオンマージのアクセスモデルを有効にします。TIDユニオンマージが効果的と判断した場合に選択します。
TIDユニオンマージのアクセスモデルを有効にしません。
USQL_LOCK = ({SH | EX})
UPDATE文:探索およびDELETE文:探索において、更新レコードを検索するアクセスモデルの表の占有モードを指定します。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、以下の値が設定されます。
USQL_LOCK = (SH)
データベース簡単運用で、いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合は、以下の値が設定されます。
USQL_LOCK = (EX)
更新標的レコードを検索するアクセスモデルで共用モードで表を占有します。
更新標的レコードを検索するアクセスモデルで非共用モードで表を占有します。
作業領域に関する実行パラメタ
SORT_HASHAREA_SIZE = (メモリサイズ)
ソート処理がレコードをハッシングして格納するための領域のサイズです。
本実行パラメタの設定は、“表5.2 変更できるパラメタ一覧”の優先順位に従います。いずれの動作環境ファイルにも本実行パラメタが指定されなかった場合、メモリ上のすべてのレコードをハッシングして格納します。
2112~2097150の範囲で指定します。単位はキロバイトです。
使用例
SQL>CHANGE ENV SORT_MEM_SIZE=(1024),R_LOCK=(YES)