REFRESH CACHE GROUP
REFRESH CACHE GROUP文は、UNLOADの後にLOADを実行したときと同じ処理を行います。
アクセス制御
TimesTenインスタンスでアクセス制御が有効な場合、この文にはキャッシュ・グループ表に対するSELECT権限およびWRITE権限が必要です。また、この文にはOracleスキーマに対するCREATE SESSION権限およびOracle表に対するSELECT権限も必要です。
SQL構文
REFRESH CACHE GROUP [Owner.]GroupName
[WHERE ConditionalExpression]
COMMIT EVERY TransactionSize ROWS
[PARALLEL NumThreads]
または
REFRESH CACHE GROUP [Owner.]GroupName
WITH ID (ColumnValueList)
パラメータ
REFRESH CACHE GROUPには、次のパラメータがあります。
パラメータ | 説明 |
[Owner.]GroupName | キャッシュ・グループに割り当てられた名前です。 |
ConditionalExpression | 操作のターゲット行を指定する検索条件です。 |
TransactionSize | 処理をコミットする前にキャッシュ・グループに挿入する行数を表す正の整数です。 |
PARALLEL [NumThreads] | キャッシュ・グループ表のパラレル・ロードを実行します。同時にロードを実行するスレッドの数を指定します。1つのスレッドがOracleからの一括フェッチを実行し、NumThreadsから1を引いた数のスレッドがTimesTenへの挿入を実行します。各スレッドで独自の接続またはトランザクションが使用されます。 NumThreadsの最小値は1で、最大値は10です。10より大きな値を指定すると、値として10を指定したとみなされます。 |
WITH ID ColumnValueList | WITH ID句を使用すると、主キーの値を使用してキャッシュ・インスタンスをリフレッシュできます。ColumnValueListを主キーの値を表すリテラルまたはバインディング・パラメータのリストとして指定します。 |
説明
- REFRESH CACHE GROUP文は、独自のトランザクション内で実行する必要があります。
- キャッシュ・グループのリフレッシュは、すでにキャッシュ内に存在するリフレッシュ対象のすべてのインスタンスが最新のOracleレコードによって置き換えられることを除き、キャッシュ・グループのロードと同じ処理を実行します。
- COMMIT EVERY n ROWS(nは0より大きな値)を指定しているときにREFRESH文が失敗すると、ターゲット・キャッシュ・グループの内容が一貫性のない状態になる場合があります。一部のキャッシュ・インスタンスが部分的にしかロードされていない可能性があります。UNLOAD文を使用してキャッシュ・グループをアンロードしてから、再度ロードを実行します。
- AUTOREFRESHまたはREADONLYキャッシュ・グループをリフレッシュする場合、次の条件を満たしている必要があります。
- AUTOREFRESH文を一時停止する必要があります。
- REFRESH文内では、WHERE句が使用できません。
- REFRESH CACHE GROUP文のWHERE句で副問合せを使用する場合、副問合せの中の表名は完全修飾されている必要があります。
- COMMIT句を実行したときに、指定したキャッシュ・グループに属する表に対してDDL操作または書込み操作(INSERT、DELETE、UPDATE)が実行されている場合は、エラーが返されます。
- SQLRowCountは、リフレッシュされたキャッシュ・インスタンスの数を返します。
- 次の場合にWITH ID句を使用します。
- キャッシュ・インスタンスのリフレッシュ速度を上げる場合(WHERE句の中で使用)
- バインディング・パラメータを指定する場合
- 障害発生時にリフレッシュ・トランザクションをロールバックする必要がある場合
制限
- 次の場合はPARALLEL句を指定しないでください。
- WITH ID句が使用されている場合
- COMMIT EVERY 0 ROWS句が使用されている場合
- NO LOGGINGが有効な場合(接続属性Loggingが0に設定されている場合)
- データ・ストア・レベルのロックが有効な場合(接続属性LockLevelが1に設定されている場合)
- SMPレベルが0である場合(接続属性SMPOptLevelが0に設定されている場合)
- 読取り専用キャッシュ・グループ、自動リフレッシュされるユーザー管理キャッシュ・グループ、または自動リフレッシュおよび伝播されるユーザー管理キャッシュ・グループでWITH ID句を使用しないでください。
- WITH ID句はCOMMIT EVERY n ROWS句と同時に使用しないでください。
例5.118
REFRESH CACHE GROUP Recreation.Cache COMMIT EVERY 30 ROWS;
これは、次と同じです。
UNLOAD CACHE GROUP Recreation.Cache;
LOAD CACHE GROUP Recreation.Cache COMMIT EVERY 30 ROWS;
例5.119
HRスキーマを使用して、PARALLEL句とREFRESH CACHE GROUP文を同時に使用する例を示します。COMMIT EVERY n ROWS(n は0より大きな値)が必要です。CACHEGROUPSコマンドを発行します。キャッシュ・グループcg2が定義され、自動リフレッシュの状態がPaused(一時停止中)であることが示されています。REFRESH CACHE GROUP文とPARALLEL句を指定してパラレル・ロードを実行します。25個のキャッシュ・インスタンスがリフレッシュされます。
Command> CACHEGROUPS;
Cache Group SAMPLEUSER.CG2:
Cache Group Type: Read Only
Autorefresh: Yes
Autorefresh Mode: Incremental
Autorefresh State: Paused
Autorefresh Interval: 1.5 Minutes
Root Table: SAMPLEUSER.COUNTRIES
Table Type: Read Only
Child Table: SAMPLEUSER.LOCATIONS
Table Type: Read Only
Child Table: SAMPLEUSER.DEPARTMENTS
Table Type: Read Only
1 cache group found.
Command> REFRESH CACHE GROUP cg2 COMMIT EVERY 20 ROWS PARALLEL 2;
25 cache instances affected.
関連項目
ALTER CACHE GROUP
CREATE CACHE GROUP
DROP CACHE GROUP
FLUSH CACHE GROUP
LOAD CACHE GROUP
UNLOAD CACHE GROUP