可获得性
本特性自MogDB 5.0.8版本开始引入。
特性简介
MogDB在增量checkpoint模式下(也是默认刷脏模式),当数据库面临大压力写场景时,会产生大量脏页堆积,导致的后果有:
- Checkpoint耗时长;
- Switchover耗时长;
- 停库耗时长等;
MogDB 5.0.8支持极致刷脏功能,通过设置参数extreme_flush_dirty_page = on开启。若当前系统的上述操作耗时比较高,可打开此参数,以提升大压力场景下的刷脏速度,使上层操作可以快速响应,降低执行checkpoint、switchover、重启RTO等操作的耗时。
新增GUC参数
extreme_flush_dirty_page
参数说明:是否开启极致刷脏模式(开启虽可以更快刷脏,但写放大增大)
该参数属于POSTMASTER类型参数。
取值范围:布尔型
默认值:off
注意:请确认当前系统刷脏慢的瓶颈不在系统IO能力之后,再打开此参数。可通过iostat、Node-exporter等监测工具确认磁盘IO不存在瓶颈。对于共享存储服务,还应确认共享存储服务的IO能力极限。
checkpoint_target_time
参数说明:期望执行checkpoint的最大耗时(值越小,刷脏越快,执行checkpoint实际耗时越小,但写放大增大,在IO成为瓶颈时,值很低可能影响业务);对应的上游操作有:停库(stop)、switchover(主备切换)、手动执行checkpoint语句。
该参数属于POSTMASTER类型参数。
取值范围:5 - 60s
默认值:30s
新增函数
local_pagewriter_flush_detail()
描述:展示刷脏流程的详细信息,包括刷脏相关的GUC参数、刷脏流程中的变量信息等,在系统刷脏慢时,调用此函数可分析问题瓶颈所在。
权限:任何用户均可调用。
返回值:
| 列名 | 描述 |
|---|---|
| node_name | 节点名称 |
| pagewriter_sleep(ms) | 刷脏单个周期 |
| max_io_capacity(M) | 最大 io 能力 |
| dirty_page_percent_max | 脏页最大占比 |
| candidate_buf_percent_target | 候选 buffer 目标值占比 |
| max_redo_log_size(M) | 最大日志回放量 |
| main_pagewriter_detail | main_pagewriter 详细信息:开始时间、等待耗时、刷脏耗时 |
| sub_pagewriter_detail | id:sub_pagewriter 编号;wait_cost:上个刷脏周期等待耗时;flush_cost:上个刷脏周期实际刷脏耗时 |
| theoritical_max_io | 理论最大值=(「扫描 buffer 到候选队列」刷脏理论最大值 + 从脏页队列刷脏理论最大值) |
| lsn_percent | lsn 占比 |
| actual_max_io | 实际最大值=(「扫描 buffer 到候选队列」刷脏实际最大值 + 从脏页队列刷脏实际最大值) |
| actual_flush_num | 实际刷脏值=(「扫描 buffer 到候选队列」刷脏实际值 + 从脏页队列刷脏实际值) |
| remain_actual_dirty_page_num | 剩余实际脏页数量 |
| list_flush_detail | 扫描 buffer 到候选队列部分明细:当前候选 buffer 数、总 buffer 数 |
| queue_flush_detail | 从脏页队列刷脏部分明细:dirty_percent |
| forecast | 预测:当前速度、当前执行 checkpoint 预计耗时 |
特性约束
- 开启极致刷脏模式,意味着写放大会增大。若IO本身已成为瓶颈,开启后优化效果不明显,同时可能导致tpmc下降。所以开启极致刷脏模式的前提是机器IO不是当前系统的瓶颈。
性能提升
开启刷脏优化后,SwitchOver时的CheckPoint时间、切换时间提升在47%以上,且TPMC平均值损失不大。
-
SwitchOver RTO平均值降幅在47%到67.5%
不开启时平均值为41.55秒,checkpoint_target_time=5时降低到13.5秒,checkpoint_target_time = 30时降低到22秒
-
SwitchOver切换时CheckPoint平均耗时降幅在49%到73%
不开启时平均值为38.68秒,checkpoint_target_time=5时降低到10.42秒,checkpoint_target_time = 30时降低到19.67秒
-
开启刷脏优化后的TPMC平均值与不开启刷脏优化的TPMC平均值接近持平。
TPCC和硬件配置情况:
- TPCC: 3000 warehouses 500/600 terminals 10 minutes Run
- 硬件配置 : arm 48 CPU 200G Mem 3T Disk(RAID 0, 2 nvme SSD)
相关页面
extreme_flush_dirty_page、checkpoint_target_time、local_pagewriter_flush_detail()




