キャッシュマネージャを制御する

Deeplからの自動翻訳

4D v16 64 ビット製品向けに、 完全に最適化された新しいキャッシュマ ネージャを 導入しました。 4D v16 R2は、高度な4D開発者が自分でコントロールできるようなパワーを与えています!

キャッシュマネージャの内部アルゴリズムは、キャッシュメモリに格納する各オブジェクトタイプに関連付けられた優先度概念に基づいている。デフォルトでは、キャッシュマネージャアルゴリズムは、レコードよりもインデックスに高い優先度値を割り当てる。そして、最近使用されたオブジェクト(レコードまたはインデックス)は、過去2日間に使用されていないオブジェクトよりも、キャッシュに残る優先順位が高い、など。

4D v16 R2 から、4D開発者はコントロールをすることができます。起動時に、アプリケーションのニーズに応じて、テーブルインデックス「ビッ グオブジェクト」のキャッシュの優先順位を微調整することができます。その上、1つのプロセスに対して例外を定義することもできます。例えば、大規模なインポートのように、実行する特定の操作がある場合、4D開発者は、特定の時間枠で、どのテーブルやインデックスがキャッシュでより高い優先度を持つべきかを決定するのに最適な存在となります。

優先順位を制御する新しいコマンド

各インデックス、各テーブル、メインレコードと「大きなパーツ」(ブロブ、テキスト、ピクチャー、オブジェクト)の違いも含めて、非常に細かい調整が可能な新しいコマンド群です。

起動時の全プロセスの優先順位の定義

SET TABLE CACHE PRIORITY
SET INDEX CACHE PRIORITY
SET BLOBS CACHE PRIORITY

現在のプロセスに対してスタートアップ時に定義された優先度を増減する

ADJUST TABLE CACHE PRIORITY
ADJUST INDEX CACHE PRIORITY
ADJUST BLOBS CACHE PRIORITY

内部優先度値の読み取り(デバッグ目的のみ)

Get adjusted table cache priority
Get adjusted index cache priority
Get adjusted blobs cache priority

beware これらのコマンドは、データベースのパフォーマンスに影響を与える可能性があるため、注意して使用する必要があります。

使用例

データベースメソッドで On Startupデータベースメソッドでは、フィールドインデックスに高い優先度を設定したい。 [Customer]LastNameフィールドインデックスに高い優先度を設定したい。
SET INDEX CACHE PRIORITY([Customer]LastName;Cache priority very high)

シーケンシャルサーチを実行する際に、データファイルに保存されている[Docs] table テキストフィールドのキャッシュ優先度を一時的に変更したいとします。
ADJUST BLOBS CACHE PRIORITY([Docs];Cache priority very high)
QUERY ([Docs];[Docs]Author#"A@")// インデックス化されていないフィールドの順次検索
// 同じテーブルで他のいくつかのクエリーまたはオーダーを実行
// 終了後、通常のキャッシュ優先度に戻す
ADJUST BLOBS CACHE PRIORITY ([Docs];Cache priority normal)

詳細については、4D v16 R2ドキュメントを参照してください。