14.4.3.6 Fine-tuning InnoDB Buffer Pool Flushing 微调 InnoDB Buffer Pool 刷新:

时间:2022-03-03 07:33:13
14.4.3.6 Fine-tuning InnoDB Buffer Pool Flushing 微调 InnoDB Buffer Pool 刷新:


innodb_flush_neighbors and innodb_lru_scan_depth 配置选项 让你微调flush处理的某些方面

对于InnoDB buffer pool.那些选项主要帮助密集写负载。对于大量的DML 活动,


flush可能落后 如果它不够积极,导致在缓冲池过度使用

或者 写磁盘由于flush 可以侵蚀你的I/O能力 如果机制过于激进。

设置依赖你的负载,数据访问模式,存储配置(比如,数据是否存储在HDD或者SSD设备).


对于繁重的负载的系统,或者 工作覆盖波动很大,几个配置选项让你微调flush 行动对于InnoDB 表。


innodb_adaptive_flushing_lwm

innodb_max_dirty_pages_pct_lwm

innodb_io_capacity_max

innodb_flushing_avg_loops


InnoDB 自适应刷新机制 不适合于所有情况,它提供了最大的效益 当redo log 是出于危险的填充状态。


innodb_adaptive_flushing_lwm 选项指定一个“low water mark”选项

当到达阀值时, InnoDB 启用自适应刷新尽管 innodb_adaptive_flushing 选项没有指定

mysql> show variables like '%innodb_adaptive_flushing%';
+------------------------------+-------+
| Variable_name | Value |
+------------------------------+-------+
| innodb_adaptive_flushing | ON |
| innodb_adaptive_flushing_lwm | 10 |
+------------------------------+-------+
2 rows in set (0.00 sec)

如果flush 活动远远落后,InnoDB 可以flush 更积极相比 innodb_io_capacity的指定


innodb_io_capacity_max 代表一个I/O能力的上线用于紧急情况,因此 I/O不会消耗所有的服务器能力


InnoDB 尝试flush 数据从buffer pool,脏页的比例不会超过 innodb_max_dirty_pages_pct的值。

默认值是 innodb_max_dirty_pages_pct是75