广告
返回顶部
首页 > 资讯 > 数据库 >怎么使用Postgresql的Checkpoint
  • 320
分享到

怎么使用Postgresql的Checkpoint

2024-04-02 19:04:59 320人浏览 薄情痞子
摘要

这篇文章主要讲解了“怎么使用postgresql的Checkpoint”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Postgresql的Check

这篇文章主要讲解了“怎么使用postgresql的Checkpoint”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Postgresql的Checkpoint”吧!

Checkpoint是什么?

checkpoint又名检查点,一般checkpoint会将某个时间点之前的dirty data全部写出到磁盘,以实现数据的一致性与完整性。目前各个流行的关系型数据库都具备checkpoint功能,其主要目的是为了缩短crash recovery time,以oracle为例,在进行数据恢复时,会以最近的checkpoint为参考点执行事务roll forward,然后对没有commit的事务进行roll back。而在WAL机制的浅析中,也提过PostgreSQL在崩溃恢复时会以最近的checkpoint为基础,不断应用这之后的WAL日志。机制大致相同。

PG的检查点种类:

在xlog.h文件中,有如下代码对checkpoint进行了相应的分类:

#define CHECKPOINT_IS_SHUTDOWN 0x0001

#define CHECKPOINT_END_OF_RECOVERY 0x0002

#define CHECKPOINT_IMMEDIATE 0x0004

#define CHECKPOINT_FORCE 0x0008

#define CHECKPOINT_WaiT 0x0010

#define CHECKPOINT_CAUSE_XLOG 0x0020

#define CHECKPOINT_CAUSE_TIME 0x0040

#define CHECKPOINT_FLUSH_ALL 0x0080 /* Flush all pages, including those

也就是说,以下几种情况会触发数据库操作系统做检查点操作:

数据库shutdown

数据库recovery完成

超级用户(其他用户不可)执行CHECKPOINT命令

XLOG日志量达到了触发checkpoint阈值

周期性地进行checkpoint

触发checkpoint时,需要刷新所有脏页,为了能够周期性的创建检查点,减少崩溃恢复时间,同时合并I/O,PostgreSQL提供了辅助进程checkpointer。它会周期性检测时间以及上面的XLOG日志量阈值是否达到,而周期时间以及XLOG日志量阈值可以通过参数来设置大小,接下来介绍下与checkpoints相关的参数。

checkpoints相关的参数

checkpoint_segments

       当前最大的WAL日志文件段的数量,或者说,当系统的日志量达到这么多的时触发一个检查点,其缺省值为3, 每个段的大小是16M,因此大概64M日志触发一个检查点。调大这个数将延长系统崩溃后恢复的时间。

checkpoint_timeout

      系统自动执行checkpoint之间的最大时间间隔。系统默认值是5分钟。

checkpoint_completion_target

       手册上原文为“Specifies the target of checkpoint completion, asa fraction of total time between checkpoints”,完成检查点所需要的时间/检查点之间总时间的目标比例*100%,它要求系统在恰当的时间内完成检查点,不要太快也不要太慢,过快将导致过于密集的IO, 形成IO风暴影响系统的平稳运行,过慢则可能引发持续性的IO, 降低系统性能。

checkpoint_warning

       系统默认值是30秒,如果checkpoints的实际发生间隔小于该参数,将会在server log中写入写入一条相关信息。可以通过设置为禁用。

checkpoint相关的计算:

checkpoint_completion_target对计算起着决定性的作用

假如参数这样配置:

shared_buffers = 128GB # 1/4 内存

checkpoint_completion_target = 0.9 # checkpoint target duration, 0.0 - 1.0

checkpoint_timeout = 30min

max_wal_size = 256GB # 2*shared_buffers

min_wal_size = 64GB # shared_buffers * 1/2

1:极端假设128G全是脏数据

(128*1024)/(30*60*0.9)= 80.90864198 MB/s

要求磁盘的平均离散IO至少在这个之上,否则存在瓶颈,因为触发时刻,压力更大。

当然前提假设,128G都是脏的,如果脏数据不多,压力更小

2:假设周期内产生256G的WAL

那么

(256*1024)/ (30*60)= 145.6355556 MB/s

WAL为顺序IO

3:bgWriter

业务上写操作除了产生WAL,还有bgwriter周期性地写出脏块,因为一个块可能被多次修改,但是writer此时可能更少

(256*1024)/ (30*60)= 145.6355556 MB/s

综上,数据库写操作吞吐均值可能是 80.9 MB/s + 145.6 MB/s+ 145.6 MB/s=372MB/s

出发瞬间的压力可能超过此值。

感谢各位的阅读,以上就是“怎么使用Postgresql的Checkpoint”的内容了,经过本文的学习后,相信大家对怎么使用Postgresql的Checkpoint这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么使用Postgresql的Checkpoint

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

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

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

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

下载Word文档
猜你喜欢
  • 怎么使用Postgresql的Checkpoint
    这篇文章主要讲解了“怎么使用Postgresql的Checkpoint”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Postgresql的Check...
    99+
    2022-10-18
  • PostgreSQL checkpoint中用于刷一个脏page的函数是什么
    这篇文章主要讲解了“PostgreSQL checkpoint中用于刷一个脏page的函数是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Postgre...
    99+
    2022-10-18
  • PostgreSQL中checkpoint_completion_target参数对checkpoint调度的影响是什么
    这篇文章主要介绍“PostgreSQL中checkpoint_completion_target参数对checkpoint调度的影响是什么”,在日常操作中,相信很多人在PostgreSQL中checkpoi...
    99+
    2022-10-18
  • PostgreSQL怎么使用
    这篇文章主要讲解了“PostgreSQL怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL怎么使用”吧!PostgreSQL 是一个免费的对象-关系数据库服务器(OR...
    99+
    2023-06-28
  • 怎么使用PostgreSQL的INDEX_CLEANUP
    这篇文章主要讲解了“怎么使用PostgreSQL的INDEX_CLEANUP”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用PostgreSQL的IN...
    99+
    2022-10-18
  • 怎么使用PostgreSQL的pg_stat_statements
    本篇内容主要讲解“怎么使用PostgreSQL的pg_stat_statements”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用PostgreSQL的...
    99+
    2022-10-18
  • 怎么使用PostgreSQL的ExprEvalStep
    本篇内容介绍了“怎么使用PostgreSQL的ExprEvalStep”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够...
    99+
    2022-10-18
  • Structured Streaming怎么使用checkpoint进行故障恢复
    本篇文章给大家分享的是有关Structured Streaming怎么使用checkpoint进行故障恢复,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用checkpoint...
    99+
    2023-06-19
  • 怎么使用PostgreSQL中的benchmarksql
    这篇文章主要介绍“怎么使用PostgreSQL中的benchmarksql”,在日常操作中,相信很多人在怎么使用PostgreSQL中的benchmarksql问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2022-10-18
  • 怎么使用PostgreSQL的Hypothetical Indexes
    本篇内容介绍了“怎么使用PostgreSQL的Hypothetical Indexes”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大...
    99+
    2022-10-18
  • 怎么使用PostgreSQL的插件pgmetries
    这篇文章主要介绍“怎么使用PostgreSQL的插件pgmetries”,在日常操作中,相信很多人在怎么使用PostgreSQL的插件pgmetries问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
    99+
    2022-10-18
  • 怎么使用PostgreSQL的插件postgresql_anonymizer
    本篇内容主要讲解“怎么使用PostgreSQL的插件postgresql_anonymizer”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Postgr...
    99+
    2022-10-18
  • 怎么使用PostgreSQL中的lightweight locks.
    这篇文章主要介绍“怎么使用PostgreSQL中的lightweight locks.”,在日常操作中,相信很多人在怎么使用PostgreSQL中的lightweight locks.问题上存在疑惑,小编查...
    99+
    2022-10-18
  • 怎么使用PostgreSQL的tuplesort_performsort函数
    本篇内容主要讲解“怎么使用PostgreSQL的tuplesort_performsort函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Postgr...
    99+
    2022-10-18
  • 怎么使用PostgreSQL游标
    这篇文章主要介绍“怎么使用PostgreSQL游标”,在日常操作中,相信很多人在怎么使用PostgreSQL游标问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Post...
    99+
    2022-10-18
  • 怎么正确使用PostgreSQL中的OR
    本篇内容介绍了“怎么正确使用PostgreSQL中的OR”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在S...
    99+
    2022-10-18
  • 怎么使用PostgreSQL中的COPY命令
    这篇文章主要讲解了“怎么使用PostgreSQL中的COPY命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用PostgreSQL中的COPY命令”...
    99+
    2022-10-18
  • 怎么使用PostgreSQL 12的settings选项
    本篇内容主要讲解“怎么使用PostgreSQL 12的settings选项”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用PostgreSQL 12的se...
    99+
    2022-10-18
  • 怎么使用PostgreSQL的SQL/JSON函数
    这篇文章主要讲解了“怎么使用PostgreSQL的SQL/JSON函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用PostgreSQL的SQL/J...
    99+
    2022-10-18
  • 怎么使用PostgreSQL中的Bloom索引
    这篇文章主要讲解了“怎么使用PostgreSQL中的Bloom索引”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用PostgreSQL中的Bloom索...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作