Как MySQL вытесняет страницы из пула буферов? - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь понять внутренности MySQL.Я знаю, что управление пулом буферов MySQL имеет старый / молодой список страниц, как показано здесь .И я действительно знаю о сбросе старых грязных страниц, таких как объясненные здесь и как настроить его здесь .Мне также известно, что MySQL использует алгоритм LRU для удаления страниц как здесь .

Однако существует ли демон / поток буферного пула, который высвобождает страницы только для чтения (не грязные страницы), которые были перенесены в буферный пул с помощью оператора select?Существуют ли способы его настройки (например, когда я пропускаю 95% емкости буферного пула, начинаю исключать прочитанные страницы или сбрасывать грязные страницы).Другими словами, какие триггеры в алгоритме LRU высвобождают страницы из пула буферов (например, время, когда страница находится в пуле буферов, процент заполнения пула буферов, необходимость удаления страниц для загрузки новых страниц), регулируются ли они?

1 Ответ

0 голосов
/ 27 декабря 2018

Очистка и удаление полностью отличаются.

https://dev.mysql.com/doc/refman/5.5/en/glossary.html#glos_flush

MySQL будет очищать грязные страницы в соответствии с innodb_max_dirty_pages_pct.По умолчанию размер страницы базы данных по умолчанию в InnoDB составляет 16 КБ, а максимальный параметр для innodb_max_dirty_pages_pct равен 99, так что толерантности к созданию грязных страниц не так много (хотя, как вы знаете по ссылке, вы приводите фактическое расписание очисткирасчет немного сложнее).

После того, как они сброшены, они будут выселены, когда они являются LRU.

MySQL использует LRU с подходом "стратегии вставки средней точки".https://dev.mysql.com/doc/refman/5.5/en/glossary.html#glos_midpoint_insertion_strategy

...