UNLOAD CACHE GROUP
UNLOAD CACHE GROUP文は、キャッシュ・グループからデータを削除します。
必要な権限
キャッシュ・グループの所有者に必要な権限はありません。
別のユーザーのキャッシュ・グループの場合、UNLOADまたはUNLOAD ANY CACHE GROUPが必要です。
基礎となる表に対するINSERT権限、DELETE権限、UPDATE権限。
TimesTen Scaleoutでの使用
この文は、TimesTen Scaleoutでサポートされています。
SQL構文
UNLOAD CACHE GROUP [Owner.]CacheGroupName [WHERE ConditionalExpression] [COMMIT EVERY n ROWS]
または
UNLOAD CACHE GROUP [Owner.]CacheGroupName WITH ID (ColumnValueList)
ノート:
WITH ID句は、TimesTen Scaleoutではサポートされていません。
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
キャッシュ・グループに割り当てられた名前。 |
|
|
|
|
|
この句を指定する場合は、キャッシュ・エージェントが稼働中で、トランザクションで実行されている操作がアンロードのみである必要があります。
パフォーマンスを高めるには、大量のデータに影響するキャッシュ・グループで操作を実行する際にこの句を使用します。 データが少量のキャッシュ・グループでは、この句を使用しないでください。 |
|
|
|
説明
-
UNLOADCACHEGROUP文は、Oracle Database表のデータに影響することなく、TimesTenキャッシュ表から行を消去します。 -
表にアウトライン列があり、数百万の行がある場合、
ttCompact組込みプロシージャを呼び出してメモリーを解放することを検討してください。 -
キャッシュ・グループがレプリケートされている場合、
UNLOAD CACHE GROUP文によって、レプリケートされたキャッシュ・グループの内容全体も削除されます。 -
AWTキャッシュ・グループに対する
UNLOAD CACHE GROUP文の実行は、行に対する更新がOracle Databaseに伝播されるまで待機します。 -
UNLOAD CACHE GROUP文は、すべての種類のキャッシュ・グループに使用できます。キャッシュ・グループの詳細は、「CREATE CACHE GROUP」を参照してください。 -
AUTOREFRESH属性を持つキャッシュ・グループでは、UNLOAD CACHE GROUP文を慎重に使用してください。Oracle Databaseで行または子行が更新されると、自動リフレッシュ操作の結果として、アンロードされた行がキャッシュ・グループに再表示されることがあります。 -
UNLOAD CACHE GROUP文の実行後、ODBC関数SQLRowCount()、JDBCメソッドgetUpdateCount()、およびOCI_ATTR_ROW_COUNT引数が指定されたOCI関数OCIAttrGet()を実行すると、アンロードされたキャッシュ・インスタンスの数が返されます。 -
COMMITEVERYnROWS句を指定する場合は、キャッシュ・エージェントはアンロード処理を実行し、データのアンロード後にトランザクションをコミットします。キャッシュ・エージェントが稼働していることを確認してください。COMMITEVERYnROWS句を指定しない場合は、アンロード処理はアプリケーションによって実行されます。 -
COMMITEVERYnROWS句を指定する場合は、アンロード操作をロールバックできません。COMMITEVERYnROWS句(n>= 0)を指定しているときにアンロード操作が失敗すると、アンロードされた行の一部はすでにコミットされているために、キャッシュ・グループが一貫性のない状態になる可能性があります。そのため、一部のキャッシュ・インスタンスが部分的にしかアンロードされていない可能性があります。その場合は、キャッシュ・グループを再度アンロードします。 -
WITH ID句を使用して、バインディング・パラメータを指定します。 -
UNLOADCACHEGROUP操作は独自のトランザクションで実行されます。
制限
-
UNLOADCACHEGROUP...WITHID句は、TimesTen Scaleoutではサポートされていません。 -
WHERE句で子表を参照しないでください。 -
静的読取り専用キャッシュ・グループのまたは自動リフレッシュ属性が指定された静的ユーザー管理キャッシュ・グループには、
WITHID句を使用しないでください。 -
WITH ID句はCOMMIT EVERYnROWS句と同時に使用しないでください。
例
キャッシュ表からデータをアンロードする場合はUNLOAD CACHE GROUP... COMMIT EVERY n ROWSを使用します。COMMIT EVERY n ROWS句が使用されるため、キャッシュ・エージェントはデータをアンロードします。
Command> UNLOAD CACHE GROUP testcache WHERE sampleuser.orders.order_id > 100 COMMIT EVERY 100 ROWS; 2 cache instances affected.
キャッシュ・グループをCREATEおよびUNLOADします。COMMIT EVERY n ROWS句が使用されないため、アプリケーションはアンロードを実行します。
CREATE CACHE GROUP recreation.cache FROM recreation.clubs ( clubname CHAR(15) NOT NULL, clubphone SMALLINT, activity CHAR(18), PRIMARY KEY(clubname)) WHERE (recreation.clubs.activity IS NOT NULL); UNLOAD CACHE GROUP recreation.cache;