ヘッダーをスキップ
Oracle TimesTen In-Memory Database APIリファレンス・ガイド
リリース7.0
E05170-03
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

ttOptSetFlag

説明

アプリケーションで、TimesTen問合せオプティマイザによる実行計画の生成を変更できるようにします。フラグを設定して、様々なアクセス方法の使用を有効または無効にします。このコールによって加えられた変更は、文を準備するときに有効になります。影響を受けるのは、現在のトランザクションでこれから実行される、ODBC関数SQLPrepareおよびSQLExecDirectへのすべてのコール、またはJDBCメソッドConnection.prepareCallおよびStatement.executeへのすべてのコールです。オプティマイザのすべてのフラグは、トランザクションがコミットまたはロールバックされた時点でそれぞれのデフォルト値にリセットされます。AutoCommitがオンになっている状態でオプティマイザ・フラグを設定しても、各文は固有のトランザクション内で実行されるため、そのフラグは無視されます。

アクセス制御

アクセス制御がTimesTenのインスタンスに対して有効である場合、このプロシージャには権限は必要ありません。

構文

ttOptSetFlag ('optFlag', optVal)

パラメータ

ttOptSetFlagには、次のパラメータがあります。

パラメータ
データ型
説明
optFlag
TT_Char (32)
NOT NULL
オプティマイザ・フラグの名前
optVal
TT_INTEGER NOT NULL
0(無効)または1(有効)

オプティマイザ・フラグ

オプティマイザ・フラグを設定する場合は、次の文字列を使用します。大文字と小文字は区別されません。

フラグ
説明

FirstRow

SELECT、UPDATEまたはDELETE文の最初の行の最適化を有効または無効にします。SQLキーワードのFIRSTがSQL文で使用された場合、これはオプティマイザ・ヒントより優先されます。キーワードFIRSTは、最初の行の最適化を有効にします。
GenPlan
残りのトランザクションでのPLAN表のエントリの作成を有効または無効にします。『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』の計画の生成に関する説明を参照してください。
Hash
索引付けされた表スキャンで、既存のハッシュ索引の使用を許可または禁止します。
MergeJoin
2つの表を結合する方法を示します。結合の入力ストリームがソートされている場合に使用可能です。たとえば、Tツリー索引スキャンが使用される場合などです。
NestedLoop
2つの表を結合する一般的な方法を示します。
PassThrough
キャッシュ接続アプリケーションのパススルー・レベルを一時的に変更します。パススルー・レベルはいつでも設定が可能で、変更はただちに有効になります。このフラグに有効な値は次のとおりです。
0: SQL文はTimesTenに対してのみ実行されます。
1: INSERT、DELETE、UPDATEおよびDDL以外の文がTimesTenで構文エラーを生成する場合、またはこれらの文で参照されている1つ以上の表がTimesTenに存在しない場合、INSERT、DELETE、UPDATEおよびDDL以外の文が渡されます。対象の表がTimesTenで見つからない場合、すべてのINSERT、DELETEおよびUPDATE文が渡されます。DDL文は渡されません。
2: 1と同じ動作に加え、READONLYのキャッシュ・グループ表に対して実行されたすべてのINSERT、UPDATEおよびDELETE文が渡されます。
3: COMMIT、ROLLBACK、SAVEPOINT以外のすべてのSQL文と、オプティマイザ・フラグを設定または取得するTimesTen組込みプロシージャが渡されます。
トランザクションの最後に、パススルー・レベルは元の値にリセットされます。
RowLock
オプティマイザによる行ロックの使用を許可または禁止します。
Scan
全表スキャンを示します。
Rowid
Row IDの使用を許可または禁止します。
TmpHash
一時的なハッシュ・スキャンの使用を許可または禁止します。これは、文の評価で使用するために実行時に作成される索引です。索引の作成には時間がかかりますが、結合条件を評価する場合の時間を節約できます。
TblLock
オプティマイザによる表ロックの使用を許可または禁止します。
TmpTable
中間結果を一時表に格納します。この処理は、結合問合せでの条件の評価を繰り返し実行することを回避したり、結合における中間結果のスキャンを単に高速化するために選択されることもあります。
TmpTtree
一時的なTツリー・スキャンを実行します。また、マージ結合で値をソートするためにも使用できます。索引の作成には時間がかかりますが、結合条件を評価する場合の時間を節約できます。
Ttree
索引付けされた表スキャンで、既存のTツリー索引の使用を許可または禁止します。
TransparentLoad
現在のトランザクションでのSELECT操作をキャッシュ・グループで実行する際に、Oracleデータをキャッシュ・グループにロードするかどうかを指定します。PassThrough値が3に設定されている場合は、すべての操作がOracleデータベースで実行されるため、TransparentLoadは無視されます。

このフラグの有効な値は次のとおりです。

0: SELECT操作が発生しても、Oracleデータはキャッシュ・グループにロードされません。(デフォルト)
1: SELECT操作が発生すると、Oracleデータはキャッシュ・グループにロードされます。このモードの場合、エラーや警告が発生しても、それが返されることはありません。
2: SELECT操作が発生すると、Oracleデータはキャッシュ・グループにロードされます。このモードの場合、SELECTが透過的ロードを使用できないと、コンパイル時または実行時にエラーが返されます。SELECTは、TimesTenで使用可能なデータのみをベースに実行されます。TimesTenインスタンスでアクセス制御が有効な場合、このフラグを設定する表のINSERT権限が必要です。

文字列AllFlagsは、すべてのオプティマイザ・フラグを示すために使用され、文字列Defaultは、デフォルトのフラグを示すために使用されます。Defaultには、GenPlanフラグ以外のすべてのオプティマイザ・フラグが含まれます。

フラグの説明

各フラグの値は1または0です。

たとえば、アプリケーションで、中間結果を格納する計画をオプティマイザが選択できないようにできます。

ttOptSetFlag ( 'TmpTable', 0 )

同様に、アプリケーションでMergeJoinのプリファレンスを指定できます。

ttOptSetFlag ( 'NestedLoop', 0 )

2つ目の例では、マージ結合が不可能な場合(たとえば、マージ結合条件がない場合)、オプティマイザはネステッド・ループ・ジョインを選択できます。同様に、オプティマイザが、表スキャンを回避するアプリケーション・リクエストを満たすことができない場合もあります(Scanフラグが0に設定されている場合)。

特定の処理が特定の計画手順で禁止されると指定すること、または特定の2つの表では必ず特定の結合方法が使用されると指定することはできません。同様に、特定の索引が使用されると指定すること、または特定の条件を評価するためにハッシュ索引が使用されると指定することもできません。各処理は、完全に許可されているか、完全に制限されているかのいずれかです。

コマンドが準備されている場合は、現在のオプティマイザ・フラグ、索引ヒントおよび結合順序はコマンドのコンパイル済形式の構造で保持され、システムによってそのコマンドが再準備されるときに使用されます。準備された文の例については、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTen問合せオプティマイザに関する説明を参照してください。

RowLockおよびTblLockの両方が無効な場合、TimesTenでは行ロックが使用されます。RowLockおよびTblLockの両方が有効な場合、TimesTenでは、パフォーマンスがより高い方のロック・スキームが使用されます。

TblLockの状態
RowLockの状態
オプティマイザへの影響
無効
無効
行レベル・ロックを使用します。
有効
無効
表レベル・ロックを使用します。
無効
有効
行レベル・ロックを使用します。
有効
有効
行レベル・ロックまたは表レベル・ロックをオプティマイザが選択します。

問合せによって表の行の重要な部分がアクセスされる場合、またはその表に同時アクセスしているトランザクションの数が非常に少ない場合(あるいはその両方)に、表レベル・ロックは有効です。

結果セット

ttOptSetFlagは結果を返しません。

CALL ttOptSetFlag ( 'TmpHash', 1 );

関連項目

ttOptEstimateStats
ttOptGetFlag
ttOptGetOrder
ttOptSetColIntvlStats
ttOptSetOrder
ttOptSetTblStats
ttOptUpdateStats
ttOptUseIndex