14.3.3.2 Configuring the Rate of InnoDB Buffer Pool Flushing 配置 InnoDB Buffer Pool 刷新频率

14.3.3.2 Configuring the Rate of InnoDB Buffer Pool Flushing 配置 InnoDB Buffer Pool 刷新频率

InnoDB 执行某些后台任务,包括flush dirty pages(那些pages已经被修改了但是没有写入到database files)

从buffer pool.InnoDB flushes buffer pool 页如果当前脏的pages 的比例在buffer pool

超过了 innodb_max_dirty_pages_pct。 在MySQL 5.7.5,

InnoDB flushed buffer pool pages 如果 脏的pages的比例大于或等于innodb_max_dirty_pages_pct

InnoDB 使用一个算法来评估flush需要的速率,其目的是平滑的总体的性能通过确保buffer flush 活动

来保持缓冲池的干净。

flush自动调整的速率可以帮助避免突然下降的吞吐量, 当过多的buffer pool flush 限制了I/O的性能

InnoDB 使用它的log files 在一个循环方式,在重用log file的一部分之前,

InnoDB flushes 所有的dirty buffer pool pages 到磁盘,这些redo entries 是包含在log file这部分,

这一操作称为checkpoint. 如果负载是写密集的,它会产生大量的redo 信息,都被写入到log file.

如果所有的可用空间在log files 都被使用,一个checkpoint 发生,

导致一个临时的吞吐量下降。这种情况肯呢过发生 即使 innodb_max_dirty_pages_pct 没有被达到。

InnoDB 使用一个启发式算法来避免这样的情况,通过测量 缓冲池里的脏的pages的数量,

和redo生成的频率。 基于这些数据,InnoDB 决定每秒多少脏的pages 从buffer pool 刷新到磁盘

内部基准测试还表明,该算法不仅保持吞吐量随着时间的推移,也可以显著的改善整体的吞吐量

原文地址:https://www.cnblogs.com/hzcya1995/p/13351184.html