• postgresql 的 checkpoint 初步研究


    os:centos 7.4
    postgresql:10.4

    checkpoint 是数据库库的重要概念,在检查点时刻,所有脏数据页被刷写到磁盘,并且一个特殊的检查点记录将被写入到日志文件(修改记录之前已经被刷写到WAL文件)。在崩溃时,崩溃恢复过程检查最新的检查点记录用来决定从日志中的哪一点(称为重做记录)开始REDO操作。在这一点之前对数据文件所做的任何修改都已经被保证位于磁盘之上。因此,完成一个检查点后位于包含重做记录的日志段之前的日志段就不再需要了,可以将其回收或删除(当WAL归档工作时,日志段在被回收或删除之前必须被归档)。

    下列条件任意之一会导致checkpoint发生:

    1、shared_buffers中,产生了 checkpoint_segments*16MB 以上的数据。

    2、距离上次checkpoint发生,经过了 checkpoint_timeout * checkpoint_completion_target 秒

    3、用户执行checkpoint 命令。

    清空checkpoint信息

    select *
    from pg_proc pc
    where 1=1
    and pc.proname like 'pg_stat_reset%'
    order by pc.proname
    ;
    select pg_stat_reset();
    select pg_stat_reset_shared('bgwriter');
    select *
    from pg_class pc
    where 1=1
    and pc.relname like 'pg_stat%'
    order by pc.relname
    ;
    
    select * from pg_stat_bgwriter;

    查看checkpoint信息

    SELECT
         total_checkpoints,
         seconds_since_start / total_checkpoints  AS seconds_between_checkpoints,
         seconds_since_stat_reset / total_checkpoints  AS seconds_between_checkpoints_stat_reset
    FROM(SELECT
             EXTRACT(EPOCH FROM (now() - pg_postmaster_start_time())) AS seconds_since_start,
             EXTRACT(EPOCH FROM (now() - stats_reset)) AS seconds_since_stat_reset,
             (checkpoints_timed + checkpoints_req) AS total_checkpoints
          FROM pg_stat_bgwriter
        ) AS sub;

    参考:
    http://blog.2ndquadrant.com/measuring_postgresql_checkpoin/
    http://postgres.cn/docs/10/wal-configuration.html
    http://postgres.cn/docs/10/monitoring-stats.html

  • 相关阅读:
    吃喝玩乐AI黑科技
    容器的介绍
    java线程池
    2020牛客暑期多校训练营(第三场)
    zabbix5.0快速搭建
    prometheus中的alertmanage配置文件详解
    gitlab的api操作
    vim编辑器可视模式
    sql语句执行顺序详解
    sql连表查询练习题
  • 原文地址:https://www.cnblogs.com/ctypyb2002/p/9792896.html
Copyright © 2020-2023  润新知