Spec-Zone.ru › MySQL 5.7

8.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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/midpoint-insertion.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API