广告
返回顶部
首页 > 资讯 > 数据库 >PostgreSQL中checkpoint_completion_target参数对checkpoint调度的影响是什么
  • 445
分享到

PostgreSQL中checkpoint_completion_target参数对checkpoint调度的影响是什么

2024-04-02 19:04:59 445人浏览 安东尼
摘要

这篇文章主要介绍“postgresql中checkpoint_completion_target参数对checkpoint调度的影响是什么”,在日常操作中,相信很多人在Postgresql中checkpoi

这篇文章主要介绍“postgresql中checkpoint_completion_target参数对checkpoint调度的影响是什么”,在日常操作中,相信很多人在Postgresql中checkpoint_completion_target参数对checkpoint调度的影响是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PostgreSQL中checkpoint_completion_target参数对checkpoint调度的影响是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

PostgreSQL对checkpoint过程的调度,与数据库在运行过程中产生日志的大小和时间两个维度相关.

日志
PostgreSQL源码中CalculateCheckpointSegments和IsCheckpointOnSchedule函数给出了checkpoint_completion_target参数对checkpoint调度的影响,在给出计算公式前,先行定义几个变量:
checkpoint进度progress:

progress=(num_processed / num_to_scan)

其中:
1.num_processed已处理的脏块数
2.num_to_scan总共需要处理的块数

checkpoint启动后产生的日志相对允许最大日志量的比例:

elapsed_xlogs = elapsed_xlogsize/wal_segment_size/checkpoint_segments
checkpoint_segments = max_wal_size_mb/wal_segment_size/(1.0 + checkpoint_completion_target)

其中:
1.elapsed_xlogsize是指在checkpoint启动后产生的日志量(以MB为单位)
2.wal_segment_size默认为16MB
3.max_wal_size_mb是postgresql.conf配置文件中

在满足以下条件时:

progress*checkpoint_completion_target ≥ elapsed_xlogs

在checkpointer进程会进行一定时间的休眠(100ms),以控制脏块刷盘(包括fsync)的进度.

可以看出,上述条件的临界点是:

progress*checkpoint_completion_target = elapsed_xlogs

现就此临界点对该公式进行变换,让checkpoint_completion_target放在等式的右边:

(num_processed / num_to_scan)*checkpoint_completion_target = 
elapsed_xlogsize*(1.0 + checkpoint_completion_target)/max_wal_size_mb
-->
num_processed / num_to_scan = 
elapsed_xlogsize*(1.0/checkpoint_completion_target + 1)/max_wal_size_mb

由此可见,在其他变量一定的情况下,右边算式的值与checkpoint_completion_target成反比,checkpoint_completion_target越大该值越小,意味着checkpointer进程休眠的机会越多.

时间
设elapsed_seconds=(now.tv_sec - ckpt_start_time + now.tv_usec / 1000000.0)表示过去消逝的时间
满足以下条件,checkpointer进度可休眠:

(num_processed/num_to_scan)*checkpoint_completion_target ≥ elapsed_seconds / checkpoint_timeout
-->
num_processed/num_to_scan ≥ elapsed_seconds/(checkpoint_completion_target*checkpoint_timeout)

右边表达式在其他变量一定的情况下,checkpoint_completion_target越大,则值越小,checkpointer可休眠的机会越大.

到此,关于“PostgreSQL中checkpoint_completion_target参数对checkpoint调度的影响是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL中checkpoint_completion_target参数对checkpoint调度的影响是什么

本文链接: https://www.lsjlt.com/news/63769.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作