FLUSH CACHE GROUP文は、TimesTenキャッシュ表のデータをOracle表にフラッシュします。 この文は、ユーザー管理キャッシュ・グループでのみ使用できます。キャッシュ・グループの種類については、「ユーザー管理キャッシュ・グループおよびシステム管理キャッシュ・グループ」を参照してください。
この操作には、WHERE句を受け入れる操作およびWITH ID句を受け入れる操作の2つのタイプがあります。
FLUSH CACHE GROUPは、コミットの伝播(TimesTenからOracleへ)がオフになっているときに使用します。 コミットのすべてのトランザクションを伝播するのではなく、変更をOracleに伝播する前に多数のトランザクションをコミットできます。 Oracle Databaseにキャッシュ・インスタンスが存在する場合は、キャッシュ・インスタンスIDごとに更新操作が実行されます。 Oracle Databaseにキャッシュ・インスタンスが存在しない場合は、TimesTenによって挿入されます。
この機能は、注文がマスターOracle表にコミットされる前に、高速キャッシュとしてTimesTenを使用する、カートへの変更が頻繁に行われるショッピング・カート・アプリケーションなどで役立ちます。
注意: 通常、WHERE句を使用するより、WITH ID句を使用した方が高いシステム・パフォーマンスが得られます。 |
挿入および更新のみがフラッシュされます。 Oracle表にレコードが存在しない場合、挿入は挿入として伝播されます。または、レコードが存在する場合は、更新として伝播されます。削除はフラッシュできません。 つまり、TimesTenでレコードが削除されても、その削除はOracle表にフラッシュされません。削除は手動で伝播するか、またはコミットの伝播をオンに設定します。削除したレコードをフラッシュしようとしても無視されます。エラーまたは警告は出力されません。 READ ONLYまたはPROPAGATEが指定された表のレコードは、Oracle表にフラッシュできません。
必要な権限
キャッシュ・グループの所有者に必要な権限はありません。
別のユーザーのキャッシュ・グループの場合はFLUSHまたはFLUSH ANY CACHE GROUPが必要です。
SQL構文
FLUSH CACHE GROUP [Owner.]GroupName [WHERE ConditionalExpression];
または
FLUSH CACHE GROUP [Owner.]GroupName WITH ID (ColumnValueList)
パラメータ
FLUSH CACHE GROUP文には、次のパラメータがあります。
パラメータ | 説明 |
---|---|
[ Owner .] GroupName |
フラッシュされるキャッシュ・グループの名前。 |
ConditionalExpression |
処理のターゲット行を指定する検索条件。 |
WITH ID ColumnValueList |
WITH ID句を使用すると、主キーの値を使用してキャッシュ・インスタンスをフラッシュできます。ColumnValueList を主キーの値を表すリテラルまたはバインディング・パラメータのリストとして指定します。 |
説明
通常、WHERE句は、単一またはすべてのインスタンスを対象に使用するものではなく、インスタンスのセットに対して使用します。 フラッシュ操作にWHERE句を使用して、Oracle Databaseに送信するインスタンスを決定します。
キャッシュ・グループのWHERE句に使用するすべての表名は、他のユーザーが同じキャッシュ・グループに対して同じWHERE句を実行できるように、所有者名で完全修飾する必要があります。所有者名を指定しない場合、キャッシュ・グループのWHERE句によって参照されるすべての表は、キャッシュ・グループ操作を実行している現在のログイン名が所有するとみなされます。
WHERE句を省略した場合、キャッシュ・グループの内容全体がOracle表にフラッシュされます。WHERE句を指定した場合、ルート表のみを含めることができます。
Oracle表への伝播をオフにしている場合(現在のトランザクションで、組込みプロシージャttCachePropagateFlagSet
に引数0(ゼロ)を指定して呼び出す場合など)は、読取り専用表を除くすべての表をOracle表にフラッシュできます。 そうでない場合は、READ ONLYまたはPROPAGATEが指定されていない表のみがOracle表にフラッシュ可能です。
FLUSH CACHE GROUP文の実行後、ODBC関数SQLRowCount()
、JDBCメソッドgetUpdateCount()
、およびOCI_ATTR_ROW_COUNT
引数を指定したOCI関数OCIAttrGet()
によって、フラッシュされたキャッシュ・インスタンスの数が返されます。
WITH ID句を使用して、バインディング・パラメータを指定します。
制限
キャッシュ・グループが動的キャッシュ・グループでないかぎり、AWTまたはSWTキャッシュ・グループ、伝播属性が設定されたユーザー管理キャッシュ・グループ、または自動リフレッシュおよび伝播されるユーザー管理キャッシュ・グループに対してWITH ID句を使用しないでください。
WITH ID句はCOMMIT EVERY n ROWS句と同時に使用しないでください。
例
FLUSH CACHE GROUP marketbasket; FLUSH CACHE GROUP marketbasket WITH ID(10);
関連項目