デフォルトでは、キーキャッシュマネージメントシステムは除去されるキーキャッシュブロックの選択に、LRU 戦略が用いられますが、ミッドポイント挿入戦略と呼ばれるより複雑なメソッドもサポートします。
ミッドポイント挿入戦略を使用している間は、LRU
チェーンは 2 つに分かれます。hot
サブチェインと warm サブチェイン。2
部位間の分割点は固定されていませんが、warm
部位が 「短すぎない」
ように、少なくとも
key_cache_division_limit
%
のキーキャッシュブロックを必ず含むように、キーキャッシュマネージメントシステムで管理されます。key_cache_division_limit
は構造化キーキャッシュ変数の構成要素であるため、その値はキャッシュごとに設定可能なパラメータとなります。
インデックスブロックがテーブルからキーキャッシュに読まれる際、warm サブチェインの後尾に置かれます。ある特定のヒット数後 (ブロックへのアクセス後)、hot サブチェインに昇格されます。現在では、ブロックを昇格させるために必要なヒット数は (3) すべてのインデックスブロックで同じです。
サブチェインに昇格されたブロックはチェインの後部に置かれます。それからブロックはこの
sub
チェイン内をめぐります。もしブロックが十分長い時間
sub チェインの前部にとどまった場合、warm
チェインに降格されます。この時間はキーキャッシュの
key_cache_age_threshold
構成要素値によって決定されます。
しきい値は、N
ブロックを含むキーキャッシュの場合、最後の
ヒットでアクセスされなかった hot
サブチェーン先頭のブロックを、warm
サブチェーンの先頭に移動するように規定します。そこから除去の第一候補となります。というのも、置換ブロックは常に
warm
サブチェインの前部から取得されるからです。
N
×
key_cache_age_threshold / 100
ミッドポイント挿入戦略によってキャッシュ内に常に高価値なブロックを保持することができます。プレーン
LRU
戦略の使用を好む場合は、key_cache_division_limit
値をデフォルトである 100
に設定しておいてください。
ミッドポイント挿入戦略によって、インデックススキャンで必要とされるクエリーの実行が、高価値なハイレベル
B-tree
ノードと一致するインデックスブロックを、効果的にキャッシュから押し出される際のパフォーマンスを向上させます。これを回避するには、100
よりかなり小さい値に設定された
key_cache_division_limit
を使用した、ミッドポイント挿入戦略を使用しなければなりません。この結果、頻繁にヒットする高価値なノードは、インデックススキャン操作中も
hot サブチェーンに保持されます。