#### 8.10.2.3 中点插入策略

默认情况下，密钥缓存管理系统使用简单的 LRU 策略来选择要驱逐的密钥缓存块，但它也支持更复杂的方法，称为中点插入策略。

使用中点插入策略时，LRU链分为两部分：热子列表和暖子列表。两个部分之间的分割点不是固定的，但是密钥缓存管理系统会注意暖部分不会“太短”，总是至少包含[`key_cache_division_limit`](server-system-variables.html#sysvar_key_cache_division_limit)关键缓存块的百分比。[`key_cache_division_limit`](server-system-variables.html#sysvar_key_cache_division_limit)是结构化键缓存变量的一个组成部分，因此它的值是一个可以为每个缓存设置的参数。

当从表中将索引块读入键缓存时，它会被放置在暖子列表的末尾。在一定数量的命中（块的访问）之后，它被提升到热子列表。目前，提升一个块 (3) 所需的命中数对于所有索引块都是相同的。

提升到热子列表的块被放置在列表的末尾。然后该块在该子列表中循环。如果该块在子列表的开头停留足够长的时间，则将其降级为暖子列表。这个时间是由的值确定[`key_cache_age_threshold`](server-system-variables.html#sysvar_key_cache_age_threshold)密钥缓存的组成部分。

阈值规定，对于包含*`ñ`*块，热子列表开头的块在最后一次没有被访问过`*`ñ`* * key_cache_age_threshold / 100`hits 将被移动到暖子列表的开头。然后它成为驱逐的第一个候选者，因为要替换的块总是从暖子列表的开头获取。

中点插入策略使您能够始终将更有价值的块保留在缓存中。如果您更喜欢使用普通 LRU 策略，请保留[`key_cache_division_limit`](server-system-variables.html#sysvar_key_cache_division_limit)值设置为其默认值 100。

当执行需要索引扫描的查询有效地将与有价值的高级 B 树节点对应的所有索引块推出缓存时，中点插入策略有助于提高性能。为避免这种情况，您必须使用中点插入策略和[`key_cache_division_limit`](server-system-variables.html#sysvar_key_cache_division_limit)设置为远小于 100。然后，在索引扫描操作期间，有价值的频繁命中节点也会保留在热子列表中。
