データの自動キャッシュ
クエリごとにキャッシュを再構築したくない場合は、データを自動的にキャッシュすると便利です。初めてデータをクエリすると、本製品 はバックグラウンドで自動的にキャッシュを初期化して構築します。AutoCache = true の場合、本製品 は後続のクエリ実行にキャッシュを使用するため、応答時間が短縮されます。
レプリケーションが有効になっている場合、データは一度生成されてからローカルおよびクラウドのデータストアにコピーされます。差分更新を使うと、本製品 はキャッシュされたテーブルを削除してリフレッシュごとにテーブル全体を再取得するよりも、優れたパフォーマンスを発揮します。反復更新を使うと、本製品 は最後に日付がリフレッシュされたときからのみクエリを実行します。レプリケーションが有効になっていない場合、キャッシュを更新するにはデータセット全体をダウンロードする必要があります。
自動キャッシュの設定
キャッシュを自動的に更新し、ローカルキャッシュから結果を返すには、次の接続文字列プロパティを設定します。
- AutoCache:このプロパティは、値がtrue に設定されていると自動的にキャッシュを更新します。
- CacheTolerance:このプロパティは、データベースから取得したデータが最新バージョンであることを確保します。デフォルト値は 600秒(10分)です。本製品 は、許容インターバルが過ぎると、新しいレコードがないかデータソースをチェックしに行きます。それ以外は、キャッシュから直接データを返します。
MARA テーブルのキャッシュ
次の例は、接続文字列のCacheLocation プロパティで指定されたファイルのMARA テーブルをキャッシュします。
SELECT MANDT, MATNR FROM MARA WHERE ERNAM = 'BEHRMANN'
SQLHSTMT hstmt; SQLTCHAR connectString[1024]; SQLSMALLINT cbconnectString; SQLDriverConnect(hdbc, 0, (SQLTCHAR*)"DSN=CData SAPERP Source;AutoCache=true;Cache Location=C:\\cache.db", SQL_NTS, connectString, 1024, &cbconnectString, SQL_DRIVER_COMPLETE); SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); SQLExecDirect(hstmt, (SQLCHAR*)"SELECT MANDT, MATNR FROM MARA WHERE ERNAM = 'BEHRMANN'", SQL_NTS); while(SQLFetch(hstmt) == SQL_SUCCESS) {} SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
一般的なユースケース
データを自動的にキャッシュする一般的な用途は、レポートの作成やビジュアライゼーションの作成など、ライブデータソースに繰り返し要求を行うときのドライバーのパフォーマンスを向上させることです。自動キャッシュが有効になっていると、同じデータに対する繰り返しの要求は短期間で実行されますが、"ライブ"データと見なされる許容範囲内(CacheTolerance)になります。