アプリケーションで次のSQL文を使用すると、Oracleからキャッシュ・グループに、またはキャッシュ・グループからOracleにデータをコピーできます。
LOAD CACHE GROUP | キャッシュに存在していないキャッシュ・インスタンスをOracleからロードします。 |
UNLOAD CACHE GROUP | インスタンスをキャッシュから削除します。 |
REFRESH CACHE GROUP | インスタンスをOracleデータで置き換えます。 |
キャッシュ・グループが(PROPAGATIONが有効でない状態で)USERMANAGEDである場合は、アプリケーションでFLUSH CACHE GROUP文を使用することもできます。FLUSH CACHE GROUP文は、キャッシュ・グループ内の行をTimesTenからOracleにコピーします。詳細は、「USERMANAGEDキャッシュ・グループのフラッシュ」を参照してください。
次の項では、各タイプの処理について詳細に説明します。
Oracleデータをキャッシュ・グループにロードする様々な方法については、『Oracle TimesTen In-Memory Databaseアーキテクチャ概要』のCache Connect to Oracleに関する章のキャッシュのロード方法の項を参照してください。
OracleからTimesTenにロードされる基本単位は、キャッシュ・インスタンスです。LOAD CACHE GROUPまたはREFRESH CACHE GROUP文のいずれかを使用すると、データをキャッシュ・グループにロードできます。次の相違はありますが、WHERE句が使用されているかどうかに関係なく、いずれのSQL文でもOracleからキャッシュ・グループにデータがコピーされます。
インスタンスをOracleからWesternCustomersキャッシュ・グループにロードするには、次のように入力します。
顧客のZIPコードが94022であるキャッシュ・グループ・インスタンスのみOracleからWesternCustomersキャッシュ・グループにロードするには、次のように入力します。
WesternCustomersキャッシュ・グループ全体をOracle表からリフレッシュするには、次のように入力します。
注文品目2353に関連付けられているキャッシュ・グループ・インスタンスのみリフレッシュするには、次のように入力します。
LOAD CACHE GROUPおよびREFRESH CACHE GROUP文の両方で、オプションのDURATION属性を設定できます。この属性は、CREATE CACHE GROUP文でキャッシュ・グループに設定されたデフォルトの存続時間値を上書きする場合に使用されます。詳細は、「DURATION」属性を参照してください。
キャッシュ・インスタンスがロードまたはリフレッシュされるたびに、インスタンスをエージ・アウトするタイミングを決定するための有効期限は、デフォルトのDURATION値、あるいはロードまたはリフレッシュ処理によって設定されるDURATIONに従って再設定されます。これは、ロードまたはリフレッシュ処理の前に行がキャッシュに存在していたかどうかに関係なく適用されます。
新しい行をOracleからWesternCustomersキャッシュ・グループにロードし、新しくロードされたキャッシュ・インスタンスが20分後にエージ・アウトされるようにDURATION値を再設定するには、次のように入力します。
キャッシュ・グループに複数の表が含まれていて、Oracleがロードまたはリフレッシュ対象の表を現在更新している場合は、まずTimesTenの分離レベルをシリアライズ可能に設定してから、LOAD CACHE GROUPまたはREFRESH CACHE GROUP文を実行する必要があります。これによって、TimesTenはシリアライズ可能な方法でOracle表を問い合せ、ロードされたデータのトランザクション一貫性が保証されます。キャッシュ・グループをロードまたはリフレッシュした後、分離レベルをREAD_COMMITTEDに再設定して同時実行性を向上させることができます。
ttIsqlセッション中、キャッシュ・グループをロードする前に分離レベルを再設定することができます。これは、キャッシュ・グループをロードまたはリフレッシュする場合、非ロギングモードに適用されます。
SQL文UNLOAD CACHE GROUPを使用すると、一部またはすべてのインスタンスをキャッシュ・グループから削除できます。DROP CACHE GROUP文とは異なり、表自体は削除されません。
UNLOAD CACHE GROUP文は、AUTOREFRESH属性を持つキャッシュ・グループに対しては注意して使用します。アンロードされた行またはその子行がOracleで更新された場合、その行は自動リフレッシュ処理の結果キャッシュ・グループに再表示される可能性があります。
すべてのインスタンスをWesternCustomersキャッシュから削除するには、次のように入力します。
CustId = 1の顧客をWesternCustomersキャッシュから削除するには、次のように入力します。
UNLOAD CACHE GROUP文を使用すると、スライディング・ウィンドウ・キャッシュ・グループを管理できます。スライディング・ウィンドウ・キャッシュ・グループには、最後のn日間のデータが含まれています。スライディング・ウィンドウ・キャッシュ・グループの設定には、次の概念が含まれています。
スライディング・ウィンドウ・キャッシュ・グループを設定するには、次の手順を実行します。
毎日Oracle表に新しい行が挿入されると、それらの行はキャッシュに挿入されます。日付が最後のn日間外の行は更新されません。
キャッシュ・グループから失効した行を削除するには、次のような文を入力します。
1つ以上のキャッシュ・グループ表のPROPAGATIONが無効になっている(デフォルトの設定)場合は、FLUSH CACHE GROUP文を使用して、キャッシュ・グループで行った挿入または更新をTimesTenからOracleに選択的に伝播できます。FLUSH CACHE GROUPでは、削除は伝播されません。
FLUSH CACHE GROUP文にWHERE句またはWITH ID句を指定すると、Oracleにフラッシュするデータを選択的に制御できます。詳細は、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』のFLUSH CACHE GROUPに関する項を参照してください。
変更をWesternCustomersキャッシュ・グループからOracleにフラッシュするには、次のように入力します。