目标
写密集型负载受 fsync 限制,团队希望在放松持久性前先拿到证据。本配方在可丢弃的预发实例上,先以最严格刷盘设置跑基准,记录吞吐与 fsync 次数作为持久性基线,再以放松设置重跑并对比,量化持久性的代价,最后选择既满足吞吐目标又符合既定丢失窗口的配置。
步骤要点
- 以最严格刷盘设置跑基准,记录吞吐与 fsync。
- 以放松设置重跑同一基准并对比差异。
- 预热缓冲池并多次运行,丢弃首轮以降低噪声。
- 把选定值写入配置文件并持久化。
SET GLOBAL innodb_flush_log_at_trx_commit = 1;
-- run the write benchmark
SHOW GLOBAL STATUS LIKE 'Innodb_data_fsyncs';
排错提示
- 放松刷盘可能在崩溃时丢失近期事务。
- 基准硬件与生产不同,结论需谨慎。
- 运行时设置重启会丢失,需写入配置。
适用边界
- 不覆盖复制链路的持久性。
- 需要界定可接受的丢失窗口。