デフォルトでは、キーキャッシュマネージメントシステムは除去されるキーキャッシュブロックの選択に、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サブチェインに保存されます。