zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    老鼠走迷宫
    堆栈的应用 问题还未解决
    计数排序与基数排序
    C++类的描述
    选择排序 冒泡排序 插入排序
    计算名次
    多项式求值 n维多项式 Horner解法
    003_sublime如何实时预览markdown
    002_git下载的源码怎么打成jar包呢?
    001_idea常用插件
  • 原文地址:https://www.cnblogs.com/ctypyb2002/p/9792896.html
Copyright © 2011-2022 走看看