数据库I/O参数调优
I/O 相关参数
pagewriter_sleep
增量checkpoint模式下,控制后端写线程pagewriter刷页频率,当脏页占据shared_buffers的比例达到dirty_page_percent_max时,每批脏页数量以设定的max_io_capacity计算出的值刷页。
pagewriter线程刷页用于推进recovery点,设置时间较长时,会导致recovery点推进慢,宕机启动时间长和xlog日志堆积问题。
为降低RTO,减少日志膨胀,需要将pagewriter_sleep适当调小,加快页面刷盘,推进recovery点,促进日志回收。
bgwriter_delay
增量checkpoint模式下,控制后端写线程bgwriter刷页频率,当前空闲缓冲页面个数占据shared_buffers的比例低于candidate_buf_percent_target时,每批脏页数量以设定的max_io_capacity计算出的值刷页。
bgwriter线程将可以淘汰的页面刷盘,加速业务执行时,页面占用槽位的速度,时间过长会影响性能。
为了提升业务性能时,适当调小bgwriter_delay的时间。
max_io_capacity
设置后端写线程(pagewriter线程和bgwriter线程)批量刷页每秒的I/O上限,需要根据具体业务场景和机器磁盘I/O能力进行设置。
要求RTO很短时间或者数据量比共享内存大多倍的情况,业务访问数据量又是随机访问时,该值不宜过小。该参数设置较小会减小后端写线程刷页个数,如果业务触发页面淘汰多时,该值设置小会影响业务。
max_io_capacity需依据随机写I/O能力进行最优设置。