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