10.10.2.3 Стратегия вставки в середину
По умолчанию система управления кэшем ключей использует простую стратегию LRU для выбора блоков кэша ключей для удаления, но она также поддерживает более сложный метод, называемый стратегией вставки в середину.
При использовании стратегии вставки в середину цепочка LRU делится на две части: горячий подсписок и тёплый подсписок. Точка разделения между двумя частями не фиксирована, но система управления кэшем ключей следит за тем, чтобы тёплая часть не была «слишком короткой», всегда содержа её по меньшей мере key_cache_division_limit процентов блоков кэша ключей. key_cache_division_limit является частью структурированных переменных кэша ключей, поэтому его значение является параметром, который можно задать для каждого кэша.
Когда блок индекса считывается из таблицы в кэш ключей, он помещается в конец тёплого подсписка. После определённого количества попаданий (доступов к блоку) он повышается в статусе до горячего подсписка. В настоящее время количество попаданий, необходимое для повышения статуса блока (3), одинаково для всех блоков индекса.
Блок, повышенный до статуса горячего подсписка, помещается в конец списка. Затем блок циркулирует внутри этого подсписка. Если блок остаётся в начале подсписка достаточно долго, он понижается в статусе до тёплого подсписка. Это время определяется значением компонента key_cache_age_threshold кэша ключей.
Значение порога предписывает, что для кэша ключей, содержащего N блоков, блок в начале горячего подсписка, к которому не было доступа в течение последних попаданий, должен быть перемещён в начало тёплого подсписка. Затем он становится первым кандидатом на удаление, потому что блоки для замены всегда берутся из начала тёплого подсписка.N *
key_cache_age_threshold / 100
Стратегия вставки в середину позволяет вам сохранять более ценные блоки всегда в кэше. Если вы предпочитаете использовать простую стратегию LRU, оставьте значение key_cache_division_limit на своём стандартном значении 100.
Стратегия вставки в середину помогает улучшить производительность, когда выполнение запроса, требующего сканирования индекса, эффективно вытесняет из кэша все блоки индекса, соответствующие ценным узлам B-дерева высокого уровня. Чтобы избежать этого, необходимо использовать стратегию вставки в середину со значением key_cache_division_limit намного меньше 100. Тогда ценные часто используемые узлы сохраняются в горячем подсписке и во время операции сканирования индекса.
© 2025 Oracle
Licensed under the GPLv2 License.