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ではサポートされていません。

パラメータ

パラメータ 説明

[Owner.]CacheGroupName

キャッシュ・グループに割り当てられた名前。

WHERE ConditionalExpression

WHERE句を使用すると、キャッシュ処理のターゲット行を指定する検索条件を指定できます。WHERE句で複数の表を使用し、これらの表に同じ名前の列がある場合は、表名を完全修飾します。

COMMIT EVERY n ROWS

COMMIT EVERY n ROWS句を使用して、アンロード操作中にコミットを発行する頻度(アンロードされる行数に基づく)を指定します。

ROWSは、キャッシュ・グループから削除される行数を指します。たとえば、キャッシュ・グループに1つのキャッシュ・インスタンスがあり、そのキャッシュ・インスタンスが1つの親行と10の子行で構成されている場合で、COMMIT EVERY 2 ROWSを発行すると、TimesTenでは、キャッシュ・インスタンス全体が消去されてからコミットを1つ発行します。TimesTenでは、キャッシュ・インスタンスの消去中はコミットされません。そのため、アンロード操作がしきい値(この場合2行)に達すると、TimesTenでは、そのキャッシュ・インスタンスのすべての行が消去されてからコミットが発行されます。

この句を指定する場合は、キャッシュ・エージェントが稼働中で、トランザクションで実行されている操作がアンロードのみである必要があります。

nは整数(n >= 0)で指定します。nに0を指定すると、UNLOAD CACHE GROUP文は、1つのトランザクションとして実行され、キャッシュ・エージェントが削除を実行します。

パフォーマンスを高めるには、大量のデータに影響するキャッシュ・グループで操作を実行する際にこの句を使用します。

データが少量のキャッシュ・グループでは、この句を使用しないでください。

WITH ID ColumnValueList

WITH ID句を使用すると、主キーの値を使用してキャッシュ・インスタンスをアンロードできます。ColumnValueListを主キーの値を表すリテラルまたはバインディング・パラメータのリストとして指定します。

WITH ID句は、TimesTen Scaleoutではサポートされていません。

説明

  • UNLOAD CACHE GROUP文は、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()を実行すると、アンロードされたキャッシュ・インスタンスの数が返されます。

  • COMMIT EVERY n ROWS句を指定する場合は、キャッシュ・エージェントはアンロード処理を実行し、データのアンロード後にトランザクションをコミットします。キャッシュ・エージェントが稼働していることを確認してください。COMMIT EVERY n ROWS句を指定しない場合は、アンロード処理はアプリケーションによって実行されます。

  • COMMIT EVERY n ROWS句を指定する場合は、アンロード操作をロールバックできません。COMMIT EVERY n ROWS句(n >= 0)を指定しているときにアンロード操作が失敗すると、アンロードされた行の一部はすでにコミットされているために、キャッシュ・グループが一貫性のない状態になる可能性があります。そのため、一部のキャッシュ・インスタンスが部分的にしかアンロードされていない可能性があります。その場合は、キャッシュ・グループを再度アンロードします。

  • WITH ID句を使用して、バインディング・パラメータを指定します。

  • UNLOAD CACHE GROUP操作は独自のトランザクションで実行されます。

制限

  • UNLOAD CACHE GROUP...WITH ID句は、TimesTen Scaleoutではサポートされていません。

  • WHERE句で子表を参照しないでください。

  • 静的読取り専用キャッシュ・グループのまたは自動リフレッシュ属性が指定された静的ユーザー管理キャッシュ・グループには、WITH ID句を使用しないでください。

  • WITH ID句はCOMMIT EVERY n ROWS句と同時に使用しないでください。

キャッシュ表からデータをアンロードする場合は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;