FLUSH CACHE GROUP

この文は、TimesTen Scaleoutではサポートされていません。

TimesTen Classicの場合:

FLUSH CACHE GROUP文は、TimesTenキャッシュ表のデータをOracle Database表にフラッシュします。この文は、ユーザー管理キャッシュ・グループでのみ使用できます。

この操作には、WHERE句を受け入れる操作およびWITH ID句を受け入れる操作の2つのタイプがあります。

FLUSH CACHE GROUPは、コミットの伝播(TimesTenからOracle Databaseへ)がオフになっているときに使用します。コミットのすべてのトランザクションを伝播するのではなく、変更をOracle Databaseに伝播する前に多数のトランザクションをコミットできます。Oracle Databaseにキャッシュ・インスタンスが存在する場合は、キャッシュ・インスタンスIDごとに更新操作が実行されます。Oracle Databaseにキャッシュ・インスタンスが存在しない場合は、TimesTenによって挿入されます。

この機能は、注文がマスターOracle Database表にコミットされる前に、高速キャッシュとしてTimesTenを使用する、カートへの変更が頻繁に行われるショッピング・カート・アプリケーションなどで役立ちます。

ノート:

通常、WHERE句を使用するより、WITH ID句を使用した方が高いシステム・パフォーマンスが得られます。

挿入と更新のみがフラッシュされます。挿入は、Oracle Database表にレコードが存在しない場合は挿入として、または(レコードがすでに存在する場合は)更新として伝播されます。削除をフラッシュすることはできません。つまり、TimesTenでレコードが削除された場合に、その削除をOracle Database表にフラッシュする方法はありません。削除は、手動で、またはコミット伝播をオンにすることで伝播する必要があります。削除されたレコードをフラッシュしようとすると、暗黙的に無視されます。エラーや警告は発行されません。READ ONLYまたはPROPAGATEとして指定されている表のレコードをOracle Database表にフラッシュすることはできません。

必要な権限

キャッシュ・グループの所有者に必要な権限はありません。

別のユーザーのキャッシュ・グループの場合はFLUSHまたはFLUSH ANY CACHE GROUPが必要です。

基礎となる表に対するINSERT権限、DELETE権限、UPDATE権限。

TimesTen Scaleoutでの使用

この文は、TimesTen Scaleoutではサポートされていません。

SQL構文

FLUSH CACHE GROUP [Owner.]Cache
[WHERE ConditionalExpression]

または

FLUSH CACHE GROUP [Owner.]CacheGroupName
WITH ID (ColumnValueList)

パラメータ

パラメータ 説明

[Owner.]CacheGroupName

フラッシュされるキャッシュ・グループの名前。

WHERE ConditionalExpression

WHERE句を使用すると、キャッシュ処理のターゲット行を指定する検索条件を指定できます。WHERE句で複数の表を使用し、これらの表に同じ名前の列がある場合は、表名を完全修飾します。

WITH ID ColumnValueList

WITH ID句を使用すると、主キーの値を使用してキャッシュ・インスタンスをフラッシュできます。ColumnValueListを主キーの値を表すリテラルまたはバインディング・パラメータのリストとして指定します。

説明

  • 通常、WHERE句は、単一またはすべてのキャッシュ・インスタンスを対象に使用するものではなく、キャッシュ・インスタンスのセットに対して使用します。フラッシュ操作にWHERE句を使用して、Oracle Databaseに送信するキャッシュ・インスタンスを決定します。

  • 一般的には、FLUSH CACHE GROUP文のWHERE句の列名を完全に修飾する必要はありません。ただし、同一キャッシュ・グループ内の複数の表を結合する問合せがTimesTenによって自動的に生成されるため、キャッシュ・グループ内に同じ名前の列を持つ表が複数ある場合は、列を完全に修飾する必要があります。所有者名を指定しない場合、キャッシュ・グループのWHERE句によって参照されるすべての表は、キャッシュ・グループ操作を実行している現在のログイン名が所有しています。

  • WHERE句を省略した場合、キャッシュ・グループの内容全体がOracle Database表にフラッシュされます。WHERE句を指定した場合、ルート表のみを含めることができます。

  • FLUSH CACHE GROUP文の実行後、ODBC関数SQLRowCount()、JDBCメソッドgetUpdateCount()、およびOCI_ATTR_ROW_COUNT引数を指定したOCI関数OCIAttrGet()によって、フラッシュされたキャッシュ・インスタンスの数が返されます。

  • WITH ID句を使用して、バインディング・パラメータを指定します。

制限

次をフラッシュするときには、WITH ID句を使用しないでください。

  • AUTOREFRESH属性を持つ静的ユーザー管理キャッシュ・グループ

  • AWTまたはSWTキャッシュ・グループ

FLUSH CACHE GROUP marketbasket;

FLUSH CACHE GROUP marketbasket
WITH ID(10);

関連項目