キャッシュ・グループのアンロード

UNLOAD CACHE GROUP文を使用すると、一部またはすべてのキャッシュ・インスタンスをキャッシュ・グループのキャッシュ表から削除できます。

DROP CACHE GROUP文とは異なり、キャッシュ・グループをアンロードしてもキャッシュ表自体は削除されません。

アンロード処理が単一のトランザクション内で多数のキャッシュ・インスタンスを処理すると同時実行性およびスループットが大幅に低下するため、これを避けるには、COMMIT EVERY n ROWS句を使用して、コミット頻度を指定します。

自動リフレッシュを使用したキャッシュ・グループでUNLOAD CACHE GROUP文を使用する場合は注意が必要です。アンロードした行またはその関連する親行または子行をキャッシュされたOracle Database表で更新した場合、自動リフレッシュ処理の結果、その行がキャッシュ表に再表示されることがあります。

AWTキャッシュ・グループに対するUNLOAD CACHE GROUP文の処理は、行に対する更新がOracle Databaseに伝播されるまで待機します。

次の例では、customer_ordersキャッシュ・グループのすべてのキャッシュ表からすべてのキャッシュ・インスタンスをアンロードします。コミット頻度が指定されているため、256行ごとにコミットすることにより、複数のトランザクションにわたって処理が実行されます。

UNLOAD CACHE GROUP customer_orders COMMIT EVERY 256 ROWS;

次の文では、単一のトランザクションでcustomer_ordersキャッシュ・グループのすべてのキャッシュ表からすべてのキャッシュ・インスタンスをアンロードします。単一のトランザクションは、customer_orders内のデータが小さい場合にのみ使用する必要があります。

UNLOAD CACHE GROUP customer_orders;

次の同等の文では、new_customersキャッシュ・グループのキャッシュ表から顧客番号227のキャッシュ・インスタンスを削除します。

UNLOAD CACHE GROUP new_customers WITH ID (227);
UNLOAD CACHE GROUP new_customers WHERE (sales.customer.cust_num = 227);

『Oracle TimesTen In-Memory Database SQLリファレンス』「UNLOAD CACHE GROUP」を参照してください。