Tips4 ローカルキャッシュ機能
Delphiの機能であるTClientDataSetを使用することによって、パフォーマンスを向上できます。
 
処理方法
TClientDataSetとは、Delphi独自の機能のことで、クライアントPCのメモリ上にデータを保持することができます。
- IBM i (AS/400)のデータをTClientDataSetにセットして使用すれば、IBM i (AS/400)へのアクセス回数が軽減される上、メモリ上での操作になるので様々な処理を行うことができ、パフォーマンスが向上します。
PacketRecordsプロパティを利用
- 一度のアクセスで取得できるレコード件数を変えることができるのでパフォーマンスの改善が望めます。
(PacketRecordsプロパティについて、詳細は下記参照)
TClientDataSetでできる様々な処理
- データがメモリ上にあるので、迅速な処理が可能
- インデックスを新たに作成することにより、ソート順を変更した表示や、迅速なレコードへの位置付けが可能
- Filterプロパティに条件式を記述することにより、使用できるレコードに制限をかけることが可能
(注記:アクセスできるレコードは制限されますが、メモリ上にはすべてのレコードを保存しています。)
- データを追加・変更・削除する場合、最後に一括してIBM i (AS/400)への反映が可能
 
注意点
TClientDataSetの利用が適さないケース
- リアルタイムなデータを必要とするアプリケーション
(TClientDataSetからIBM i (AS/400)への更新を適用する時に、メモリ上の内容が反映されます。)
IBM i (AS/400)側でのロックについて
- データの読み込み・更新時には共有ロックが掛かります。その処理後は、ロックは外れます。

 

 
詳細説明

TClientDataSetの使用方法についての詳細はこちら

PacketRecordsプロパティについて
例えば、DBGridにデータを表示する場合、データ量が膨大だと全件読み込むには非常に時間がかかるため、なかなかデータが表示されません。しかし「PacketRecordsプロパティ」の値を1画面の表示データ件数分を読み込むように変更するとデータの表示が格段に早くなります。ただ、スクロールダウンする時には次のデータの読み込みが必要になります。反対にスクロールアップする時には、以前のデータがキャッシュ上に残されているので、メモリにアクセスすることで、すばやく表示することができます。
逆にデータ量がそれほど多くない場合だと、「PacketRecordsプロパティ」の値を「-1」にしてすべてのレコードを読み込むようにする方が、データ受渡しの回数が1回ですむので早くなります。