pg技术大讲堂 -凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 593405
  • 博文数量: 486
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4941
  • 用 户 组: 普通用户
  • 注册时间: 2018-07-05 13:59
个人简介

ocp考试资料群:569933648 验证码:ocp ocp 12c 19c考试题库解析与资料群:钉钉群号:35277291

文章分类

全部博文(486)

文章存档

2024年(3)

2023年(35)

2021年(151)

2020年(37)

2019年(222)

2018年(38)

我的朋友
相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: mysql/postgresql

2023-04-17 11:34:37


postgresql从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对pg基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱pg、学习pg的同学们有帮助,欢迎持续关注cuug pg技术大讲堂。

part 14:postgresql检查点

内容1:检查点触发机制

内容2:检查点作用

内容3:检查点如何工作

内容4:检查点如何调整


检查点处理过程

· 检查点触发机制

在postgresql中,检查点(后台)进程执行检查点;当发生下列情况之一时,其进程将启动: 
检查点间隔时间由checkpoint_timeout设置(默认间隔为300秒(5分钟)) 
在9.5版或更高版本中,pg_xlog中wal段文件的总大小(在10版或更高版本中为pg_wal)已超过参数max_wal_size的值(默认值为1gb(64个16mb文件))。 
postgresql服务器在smart或fast模式下关闭。 
手动checkpoint。


检查点作用

· 为什么需要检查点

所有的数据库几乎都有检查点机制,为什么需要检查点呢,有以下几个作用:

1、定期保存修改过的数据块(保护劳动果实)

检查点发生时,检查点进程会把共享缓冲区中的脏块(被修改过的块)写入磁盘,永久保存,否则如果发生主机断电等故障,内存中的数据块就会丢失,该检查点的发生频率由checkpoint_timeout控制,定期发生。

2、做为实例恢复时起始位置

如果发生实例崩溃,那么下一次启动时则需要进行实例恢复,数据库根据{banned}最佳近一次检查点的位置作为起始位置开始recovery。

3、做为介质恢复时起始位置

每次进行物理备份时都会发生一个检查点,用来判断将来进行恢复时的起始位置,因为备份时数据文件是有先后顺序,备份出来的数据文件是不一致的,将来恢复出来后需要应用归档日志把他们变成同步,开始备份的位置就是将来recovery的位置。


xlog 写记录

· 检查点工作流程


检查点记录位置

· 控制文件

控制文件中记录了检查点的相关信息 
latest checkpoint location –{banned}最佳新检查点记录的lsn位置。 
prior checkpoint location –先前检查点记录的lsn位置。


pg_control file

· 控制文件

控制文件中记录的检查点相关信息

postgres> pg_controldata /usr/local/pgsql/data

pg_control {banned}最佳后修改: 2022/10/25 10:36:29

{banned}最佳新检查点位置: 0/65441f8

{banned}最佳新检查点的 redo 位置: 0/65441f8

{banned}最佳新检查点的重做日志文件: 000000010000000000000006

{banned}最佳新检查点的 timelineid: 1

{banned}最佳新检查点的prevtimelineid: 1

... snip ...


database recovery

· 利用检查点做为recovery的起始位置


检查点调整

 检查点发生的间隔时间决定了实例恢复需要的时长,checkpoint_timeout设置的值应该根据业务的需求设置,以实例崩溃时,下一次打开数据库时长的容忍度而设置。

 间隔时间短,则实例恢复需要的时间就短,可提高数据库的可用性,但是会增加i/o操作,降低数据库状态性能,检查点发生时属于密集型i/o操作,会占用大量系统资源。

 间隔时间长,则实例恢复需要的时间就长,会降低数据库的可用性,但是会减少i/o操作,提高数据库状态性能。

checkpoint_completion_target

 数据库中一个至关重要的参数,主要与参数checkpoint_timeout(checkpoint_timeout)配合使用,值越小意味着检查点要越快完成,要求写得要快。

 控制每次检查点发生时i/o的吞吐量,值越高,则i/o占用的资源越少,数据库性能越好;值越低,则i/o占用的资源越多,影响数据库性能,但是提高检查点完成速度。

往期视频和教程,联系cuug

阅读(297) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图