我正在尝试了解 MySQL 的内部结构。我知道 MySQL 的缓冲池管理有一个旧/新页面列表,如此处所示。而且我确实知道旧脏页的刷新,例如here以及如何自定义here。我也知道 MySQL 使用 LRU 算法进行页面驱逐,如此处。
但是,是否有一个缓冲池守护程序/线程驱逐只读页面(不是脏页面),这些页面是通过 select 语句带到缓冲池的?有没有办法自定义它(例如,当我通过 95% 的缓冲池容量时,开始逐出读取页面或刷新脏页)。换句话说,LRU 算法中的哪些触发器从缓冲池中逐出页面(例如,页面在缓冲池上的时间、缓冲池填充的百分比、需要逐出页面以加载新页面),这些是可调整的吗?