gpt4 book ai didi

mysql - MySQL 如何从缓冲池中逐出页面?

转载 作者:行者123 更新时间:2023-11-29 07:25:39 25 4
gpt4 key购买 nike

我正在尝试了解 MySQL 的内部结构。我知道 MySQL 的缓冲池管理有一个旧/新页面列表,如图所示 here .而且我确实知道旧脏页的刷新,如解释的here以及如何自定义它 here .我也知道 MySQL 使用 LRU 算法进行页面驱逐,如 here .

但是,是否有一个缓冲池守护进程/线程可以驱逐通过 select 语句带到缓冲池的只读页面(不是脏页)?有没有办法自定义它(例如,当我通过 95% 的缓冲池容​​量时,开始驱逐读取的页面或刷新脏页)。换句话说,LRU 算法中的什么触发器从缓冲池中逐出页面(例如,页面在缓冲池中的时间、缓冲池填充的百分比、需要逐出页面以加载新页面),这些是否可调?

最佳答案

刷新和驱逐是完全不同的。

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

MySQL会根据innodb_max_dirty_pages_pct刷新脏页。 InnoDB 中的默认数据库页面大小默认为 16KB,innodb_max_dirty_pages_pct 的最大设置为 99,因此对脏页的堆积没有太多的容忍度(尽管,正如您从链接中知道的那样,您引用了实际的刷新计划计算有点复杂)。

在它们被刷新后,当它们是 LRU 时它们将被驱逐。

MySQL 使用具有“中点插入策略”方法的 LRU。 https://dev.mysql.com/doc/refman/5.5/en/glossary.html#glos_midpoint_insertion_strategy

关于mysql - MySQL 如何从缓冲池中逐出页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53936032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com