LOAD CACHE GROUP
LOAD CACHE GROUP文は、Oracle表からTimesTenキャッシュ・グループにデータをロードします。
アクセス制御
TimesTenインスタンスでアクセス制御が有効な場合、この文にはキャッシュ・グループ表に対するSELECT権限およびWRITE権限が必要です。また、この文にはOracleスキーマに対するCREATE SESSION権限およびOracle表に対するSELECT権限も必要です。
SQL構文
LOAD CACHE GROUP [Owner.]GroupName
[WHERE ConditionalExpression]
COMMIT EVERY TransactionSize ROWS
[PARALLEL NumThreads]
または
LOAD CACHE GROUP [Owner.]GroupName
WITH ID (ColumnValueList)
パラメータ
LOAD CACHE GROUP文には、次のパラメータがあります。
パラメータ | 説明 |
[Owner.]GroupName | キャッシュ・グループに割り当てられた名前です。 |
ConditionalExpression | 操作のターゲット行を指定する検索条件です。 |
TransactionSize | 処理をコミットする前にキャッシュ・グループに挿入する行数です。正の整数である必要があります。 |
[PARALLEL NumThreads] | キャッシュ・グループ表のパラレル・ロードを実行します。同時にロードを実行するスレッドの数を指定します。1つのスレッドがOracleからのバルク・フェッチを実行し、NumThreadsから1を引いた数のスレッドがTimesTenへの挿入を実行します。各スレッドで独自の接続またはトランザクションが使用されます。 NumThreadsの最小値は1で、最大値は10です。10より大きな値を指定すると、値として10を指定したとみなされます。 |
WITH ID ColumnValueList | WITH ID句を使用すると、主キーの値を使用してキャッシュ・インスタンスをロードできます。ColumnValueListを主キーの値を表すリテラルまたはバインディング・パラメータのリストとして指定します。 |
説明
- キャッシュ・グループの定義を満たし、キャッシュ・グループにまだ存在していないすべての新しいインスタンスをOracleからロードします。
- LOAD CACHE GROUPは、独自のトランザクション内で実行し、トランザクション内の最初の操作である必要があります。
- トランザクション・サイズは、処理をコミットする前に挿入したインスタンスの数です。COMMIT EVERY n ROWSのnの値は、正の数である必要があります。また、この値はパフォーマンス上の理由から、最も近い256の倍数に切り上げられます。
- COMMIT句を省略した場合、単一のトランザクション内でロードが実行され、すべての行が正常にロードされた後、処理がコミットされます。エラーが発生するとロールバックされます。行が定期的にコミットされると、エラーによって残りのロードは中止され、直前にコミットした時点までロールバックされます。
- COMMIT EVERY n ROWS(nは0より大きな値)を指定しているときにLOAD文が失敗すると、ターゲット・キャッシュ・グループの内容が一貫性のない状態になる場合があります。一部のキャッシュ・インスタンスが部分的にしかロードされていない可能性があります。UNLOAD文を使用してキャッシュ・グループをアンロードしてから、再度ロードを実行します。
- AUTOREFRESHまたはREADONLYキャッシュ・グループをロードする場合、次の条件を満たしている必要があります。
- AUTOREFRESHのSTATEは、PAUSEDにする必要があります。
- LOAD CACHE GROUP文では、WHERE句が使用できません。
- キャッシュ・グループは空である必要があります。
- 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.114
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);
LOAD CACHE GROUP Recreation.Cache
COMMIT EVERY 30 ROWS;
例5.115
HRスキーマを使用して、PARALLEL句とLOAD CACHE GROUP文を同時に使用する例を示します。COMMIT EVERY n ROWS(n は0より大きな値)が必要です。CACHEGROUPSコマンドを発行します。キャッシュ・グループcg2が定義され、自動リフレッシュの状態がPaused(一時停止中)であることが示されています。キャッシュ・グループcg2をアンロードしてから、LOAD 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> UNLOAD CACHE GROUP cg2;
25 cache instances affected.
Command> COMMIT;
Command> LOAD CACHE GROUP cg2 COMMIT EVERY 10 ROWS PARALLEL 2;
25 cache instances affected.
Command> COMMIT;