文档中心MogDBMogDB StackUqbar
v5.0

文档:v5.0

支持的版本:

其他版本:

极致刷脏

可获得性

本特性自MogDB 5.0.8版本开始引入。

特性简介

MogDB在增量checkpoint模式下(也是默认刷脏模式),当数据库面临大压力写场景时,会产生大量脏页堆积,导致的后果有:

  1. Checkpoint耗时长;
  2. Switchover耗时长;
  3. 停库耗时长等;

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和硬件配置情况:

  1. TPCC: 3000 warehouses 500/600 terminals 10 minutes Run
  2. 硬件配置 : arm 48 CPU 200G Mem 3T Disk(RAID 0, 2 nvme SSD)

相关页面

extreme_flush_dirty_pagecheckpoint_target_timelocal_pagewriter_flush_detail()

Copyright © 2011-2024 www.enmotech.com All rights reserved.