タスクのメインソースで使用するキャッシュ範囲を指定します。
オンラインタスクが定義されており、物理トランザクションを使用しているオンラインタスクの場合は、以下の4つのオプションが有効になります。最初の2つは遅延トランザクションでも利用可能です。
P=位置 …… キャッシュはフェッチしたレコードの位置に関する情報を保持します。この設定は、テーブルをメインソースとして使用する場合にのみ実行されます。次に後方スクロールを行うと、レコードの物理的な位置が読み込まれ、データが再びフェッチされます。
D=位置とデータ …… 位置のほかに、レコードの実際のデータがキャッシュされます。事前にフェッチされているデータを読み込む場合には、キャッシュにすでに保存されている値が表示されます。別のタスクで修正されたレコードを更新しようとするとエラーが発生します。
N=なし …… キャッシュは行われません。レコードの読み込み処理が行われる度に、データベースからの読み込みが行われます。レコードのマルチマークができなくなります。
T=メインソースに依存 …… (デフォルト)メインソースの[データソース特性]の[キャッシュ範囲]の指定に依存します。
注意: |
この特性が「N=なし」に設定された場合、レコードのマルチマーク処理ができなくなります。 |
キャッシュメカニズムによって、レコードレベルでデータを保存することができます。取得されたレコードは、クライアント・キャッシュに保存することができます。レコードはタスク実行中、キャッシュに保存され、通常はタスクの終了時に解放されます。複数のレコードを処理するタスクでは、キャッシュを使用することで、パフォーマンスを向上させるための現実的な選択肢となります。
キャッシュに格納されたテーブルを使用して動作する場合、以下の点に注意してください。
キャッシュに格納されたテーブルは、メモリを消費します。したがって、クライアントPCに必要なメモリが確保されていることを確認してください。
キャッシュから読み出されるデータは、必ずしも直近で更新されたデータではない場合があります。
クライアントPCに十分なメモリリソースが確保されていない場合、パフォーマンスは低下する可能性があります。[キャッシュ範囲]は、テーブルレベルで定義することでき、タスクレベルで上書きすることができます。タスクのデフォルトは、テーブルから継承されます。
インタラクティブなタスクでは、メインソースとリンクテーブルのに関連します。バッチタスクでは、リンクテーブルのみ関連します(メインソースの同じレコードを何度もアクセスすることはできません。しかし、同じリンクは異なるレコードので使用することができます)。
バッチタスクでは、リンクによって同じ範囲のレコードを何度もアクセスすることがあります。キャッシュがメインソースから各レコード毎のリンクテーブルのために使用されない場合、リンクレコードは再度データベースから読み込まれます。キャッシュを使用する場合、リンクテーブルはクライアントに保存されて、取得されます。これによって、バッチタスク全体の処理時間が改善されます。