ttOptSetFlag
SQLPrepare
およびSQLExecDirect
へのすべてのコール、またはJDBCメソッドConnection.prepareCall
およびStatement.execute
へのすべてのコールが影響を受けます。AutoCommit
がオンのときにオプティマイザ・フラグセットされた場合、それらは無視されます。
必要な権限
このプロシージャには、権限は必要ありません。
TimesTen ScaleoutおよびTimesTen Classicでの使用
このプロシージャは、TimesTen Classicでサポートされています。
TimesTen Scaleoutアプリケーションでこの組込みプロシージャをコールできます。
TimesTen Scaleoutの場合、このプロシージャは、コール元の要素に対してローカルに実行されます。
構文
ttOptSetFlag('optFlag', optVal)
パラメータ
ttOptSetFlag
には、次のパラメータがあります。
パラメータ | 型 | 説明 |
---|---|---|
|
|
オプティマイザ・フラグの名前。 |
|
|
オプティマイザ・フラグの値。次の「オプティマイザ・フラグ」に記載されている場合を除き、通常、値は |
オプティマイザ・フラグ
オプティマイザ・フラグを設定する場合は、次の文字列を使用します。大文字と小文字は区別されません。
フラグ | 説明 |
---|---|
|
ブランチおよびバインドされた最適化を有効または無効にします。有効な場合、TimesTenによって、最適化プロセスの冒頭の0フェーズで、問合せ計画の最大コストが計算されます。無効な場合、TimesTenはこのコスト分析を実行しません。 |
|
Oracle DatabaseからTimesTenの動的キャッシュ・グループへの単一キャッシュ・インスタンスの動的ロードを有効または無効にします。デフォルトでは、Oracle Databaseからのデータの動的ロードが有効になっています。 |
|
動的ロード・エラー・モードを有効または無効にします。このモードにより、TimesTen動的キャッシュ・グループに対する透過的ロード処理が失敗した場合のエラー・メッセージの出力が制御されます。デフォルトでは無効です。 |
|
Oracle Databaseからルート表のみを含むTimesTen動的キャッシュ・グループへの複数のキャッシュ・インスタンスの動的ロード(複数の主キーを指定)を有効または無効にします。デフォルトでは、Oracle Databaseからの複数の主キーを使用した複数のキャッシュ・インスタンスの動的ロードは有効になっています。 |
|
Oracle Databaseからルート表のみを含むTimesTen動的キャッシュ・グループへの複数のキャッシュ・インスタンスの動的ロード(複数の主キーを指定しない)を有効または無効にします。デフォルトでは、Oracle Databaseからの複数のキャッシュ・インスタンスの動的ロードは無効になっています。 |
|
|
|
強制コンパイルを有効または無効にします。有効な場合、TimesTenは問合せを再コンパイルし、毎回、問合せ計画を再生成します。無効な場合、問合せ計画が使用可能な場合でも、TimesTenはコンパイルを実行しません。 |
|
残りのトランザクションでの 例は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』の「計画をシステムPLAN表に格納するようにTimesTenに指示する方法」を参照してください。 |
|
索引付けされた表スキャンで、既存のハッシュ索引の使用を有効または無効にします。 |
|
ハッシュ・グループの使用を有効または無効にします。 |
|
シリアライズ表スキャンを有効または無効にします。無効な場合、TimesTenは |
|
マージ結合の使用を有効または無効にします。 |
|
2つの表を結合する一般的な方法を示します。 |
|
|
|
TimesTen Cacheアプリケーションのパススルー・レベルを一時的に変更します。パススルー・レベルはいつでも設定が可能で、変更はただちに有効になります。このフラグでサポートされる値は次のとおりです。
|
|
索引付けされた表スキャンで、既存の範囲索引の使用を有効または無効にします。 |
|
Row IDの使用を有効または無効にします。 |
|
オプティマイザによる行ロックの使用を許可または禁止します。 |
|
全表スキャンを示します。 |
|
オプティマイザ・スキャンでの表の結合順序を表示します。 |
|
オプティマイザによる表ロックの使用を有効または無効にします。 |
|
一時的なハッシュ・スキャンの使用を有効または無効にします。これは、文の評価で使用するために実行時に作成される索引です。索引の作成には時間がかかりますが、結合条件を評価する場合の時間を節約できます。 |
|
一時的な範囲スキャンを実行します。また、マージ結合で値をソートするためにも使用できます。索引の作成には時間がかかりますが、結合条件を評価する場合の時間を節約できます。 |
|
中間結果を一時表に格納します。この処理は、結合問合せでの条件の評価を繰り返し実行することを回避したり、結合における中間結果のスキャンを単に高速化するために選択されることもあります。 |
|
Boyer-Moore文字列検索アルゴリズムを有効または無効にします。有効な場合、Boyer-Moore文字列検索アルゴリズムが有効になります。これによって、 |
さらに文字列AllFlags
をすべてのオプティマイザ・フラグを参照するために使用し、文字列Default
をデフォルトのフラグを参照するために使用できます。Default
には、GenPlan
フラグ以外のすべてのオプティマイザ・フラグが含まれます。
フラグの説明
各フラグの値は1または0です。
-
1の場合、処理は有効
-
0の場合、必要時以外、処理は無効
GenPlan
以外のすべての初期フラグ値は1です(すべての処理が許可されます)。
たとえば、アプリケーションで、中間結果を格納する計画をオプティマイザが選択できないようにできます。
ttOptSetFlag ( 'TmpTable', 0 )
同様に、アプリケーションでMergeJoin
のプリファレンスを指定できます。
ttOptSetFlag ( 'MergeJoin', 0 )
2つ目の例では、マージ結合が不可能な場合(たとえば、マージ結合条件がない場合)、オプティマイザはネステッド・ループ・ジョインを選択できます。同様に、オプティマイザが、表スキャンを回避するアプリケーション・リクエストを満たすことができない場合もあります(Scan
フラグが0
に設定されている場合)。
特定の処理が特定の計画ステップで禁止されると指定すること、または特定の2つの表では必ず特定の結合方法が使用されると指定することはできません。同様に、特定の索引が使用されると指定すること、または特定の条件を評価するためにハッシュ索引が使用されると指定することもできません。各処理は、完全に許可されているか、完全に制限されているかのいずれかです。
コマンドが準備されている場合は、現在のオプティマイザ・フラグ、索引ヒントおよび結合順序はコマンドのコンパイル済形式の構造で保持され、システムによってそのコマンドが再準備されるときに使用されます。再準備された文の例については、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』の「TimesTen問合せオプティマイザ」を参照してください。
DynamicLoadMultiplePKs
とDynamicLoadRootTbl
の両方が有効な場合、DynamicLoadMultiplePKs
が優先されます。
RowLock
およびTblLock
の両方が無効な場合、TimesTenでは行ロックが使用されます。RowLock
およびTblLock
の両方が有効な場合、TimesTenでは、パフォーマンスがより高い方のロック・スキームが使用されます。
TblLockの状態 | RowLockの状態 | オプティマイザへの影響 |
---|---|---|
無効 |
無効 |
行レベル・ロックの使用。 |
有効 |
無効 |
表レベル・ロックの使用。 |
無効 |
有効 |
行レベル・ロックの使用。 |
有効 |
有効 |
行レベル・ロックまたは表レベル・ロックをオプティマイザが選択します。 |
通常、問合せによって表の行の重要な部分がアクセスされる場合、またはその表に同時アクセスしているトランザクションの数が非常に少ない場合に、表レベル・ロックは有効です。
結果セット
ttOptSetFlag
は結果を返しません。
例
CALL ttOptSetFlag ('TmpHash', 1);
ノート:
結合の順序は、特定のSQL文の中で文レベル・オプティマイザ・ヒントを使用して設定することもできます。詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス』の「文レベルのオプティマイザ・ヒント」を参照してください。特にヒントの各スタイルの動作については、オプティマイザ・ヒントの表を参照してください。