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

u1ehiz5o  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(352)

我试图理解mysql的内部结构。我知道mysql的缓冲池管理有一个旧的/年轻的页面列表,如下所示。我确实知道如何刷新旧的脏页,比如这里的解释和如何定制。我还知道mysql使用lru算法进行页面逐出。
但是,是否有一个缓冲池守护进程/线程,它会逐出由select语句带入缓冲池的只读页(而不是脏页)?有没有定制它的方法(例如,当我超过缓冲池容量的95%时,开始逐出读页或刷新脏页)。换句话说,lru算法中的哪些触发器从缓冲池中逐出页面(例如,页面在缓冲池中的时间、缓冲池已满的百分比、需要逐出页面以加载新页面),这些触发器是可调整的吗?

daolsyd0

daolsyd01#

冲洗和驱逐是完全不同的。
https://dev.mysql.com/doc/refman/5.5/en/glossary.html#glos_flush
mysql将根据innodb\u max\u dirty\u pages\u pct刷新脏页。innodb中的默认数据库页大小默认为16kb,innodb\u max\u dirty\u pages\u pct的最大设置为99,因此对于脏页的构建没有太多的容忍度(尽管,从您引用的链接中可以看出,实际冲洗计划的计算有点复杂)。
当他们是lru时,他们将被驱逐。
mysql使用具有“中点插入策略”的lru。https://dev.mysql.com/doc/refman/5.5/en/glossary.html#glos_midpoint_insertion_strategy

相关问题