PostgreSQL CheckPoint设置(转)

  今天在研究checkpoint process的问题时,顺便复习了一下checkpoint设置问题,又有新的疑惑了。

  checkpoint又名检查点,在oracle中checkpoint的发生意味着之前的脏数据全部写回磁盘,数据库实现了一致性与数据完整性。oracle在实现介质恢复时将以最近的checkpoint为参照点执行事务前滚。在postgresql中checkpoint起着相同的作用:写脏数据;完成数据库的完整性检查。

  checkpoints相关参数:
  checkpoint_segments:
  WAL log的最大数量,系统默认值是3。该值越大,在执行介质恢复时处理的数据量也越大,时间相对越长。
  checkpoint_timeout:
  系统自动执行checkpoint之间的最大时间间隔,同样间隔越大介质恢复的时间越长。系统默认值是5分钟。
  checkpoint_completion_target:
  该参数表示checkpoint的完成目标,系统默认值是0.5,也就是说每个checkpoint需要在checkpoints间隔时间的50%内完成。
  checkpoint_warning:
  系统默认值是30秒,如果checkpoints的实际发生间隔小于该参数,将会在server log中写入写入一条相关信息。可以通过设置为0禁用信息写入。

  checkpoint执行控制:
  1,数据量达到checkpoint_segments*16M时,系统自动触发;
  2,时间间隔达到checkpoint_timeout参数值时;
  3,用户发出checkpoint命令时。

  checkpoints参数调整:
  正确合适的参数值总能够给系统带来益处,checkpoints参数合理的配置不仅能够减少系统IO写入的阻塞,同时还会减少高峰时IO给系统带来的压力。
  首先可以通过观察checkpoint_warning参数写入的日志,来估算系统写入的数据量:一般情况下    checkpoint_warning参数值小于checkpoint_timeout;
  估算公式:checkpoint_segments*16M*(60s/m)/checkpoint_warning=大致每分钟数据量,得到每分钟写入的数据量(这里全部是估算,建立在warning参数的合理设置上)。

  --为什么要除checkpoint_warning呢?

  合理配置情况:checkpoint_segments*16M*checkpoint_timeout(m)略大于上述值.

  --为什么要乘checkpoint_timeout,不应该除吗?

  以上述公式为依据,配置checkpoint_segments与checkpoint_timeout,两个参数应该尽量平衡为一个足够大和足够小的值。
  在数据量异常高的情况下应该考虑,磁盘带宽与checkpoint时数据量的关系。

  个人观点:
  假如以checkpoint_segments参数为阀值时,可以计算高峰时需要的带宽(秒):checkpoint_segments*16M/(checkpoint_warning*checkpoint_completion_target)。
  

  假如以checkpoint_timeout参数为阀值时,checkpoint_warning值最好大于等于checkpoint_timeout,通过监控系统数据字典统计写入的数据量Total。
  Total/(checkpoint_timeout*checkpoint_completion_target)得到IO的带宽要求。

  --这点容易理解。

  

时间: 2024-10-09 15:43:59

PostgreSQL CheckPoint设置(转)的相关文章

Measuring PostgreSQL Checkpoint Statistics

Checkpoints can be a major drag on write-heavy PostgreSQL installations. The first step toward identifying issues in this area is to monitor how often they happen, which just got an easier to use interface added to the database recently. Checkpoints

PostgreSQL 修改设置数据库的默认用户以及权限.

1. 登录PG数据库. psql -U postgres 界面效果为: [[email protected] ~]# psql -U postgres psql (10.7) Type "help" for help. postgres=# 其实这里面有一个主意事项. psql 的 命令执行 其实是在环境变量里面的 我这边使用的是rpm 方式安装的pg 数据库. 2. 简单说一下pgsql 的相关命令 使用反斜线作为命令前缀. 退出 \q 列出所有的数据库 \l 更改当前连接的数据库

外部客户端连接postgresql相关设置

修改服务配置文件postgresql.conf中的监听参数 默认配置文件在PGDATA目录下(除了你是通过服务进程中的参数config_file来指定的) [[email protected] data]$ vi postgresql.conf ...... listen_addresses = '*' # what IP address(es) to listen on; ...... 修改pg_hba.conf文件,添加一行host认证 默认配置文件在PGDATA目录中,可以通过服务配置文件

postgreSQL的设置自增主键初始值

select setval('t_custom_model_id_seq',1,false);

postgresql 如何设置主键自增

法一: CREATE TABLE customers ( customerid SERIAL primary key , companyname character varying, contactname character varying, phone character varying, country character varying ) 法二 CREATE SEQUENCE event_id_seq START WITH 1 INCREMENT BY 1  NO MINVALUE  

PostgreSQL Replication之第四章 设置异步复制(5)

4.5 使流复制更健壮 当连接到master时,slave要做的第一件事情是赶上master.但是,这会一直工作吗?我们已经看到,我们可以使用由基于流和基于文件组成的混合设置.这给了我们一些额外的安全性,以防流不工作. 在现实世界的场景中,传送XLOG的两种方法可能过于复杂.在许多情况下,使用流就足够了.问题的关键是:在一个正如已经描述过的正常的设置中,只要不再需要XLOG来修复master,master就可以丢掉XLOG.根据您的检查点配置,XLOG可能存在相当长一段时间,或只有很短的时间.麻

fedora22用rpm包安装配置postgresql数据库

严格内网环境,无网络连接,新装fedora 22系统,无任何其他配置. 安装 1.安装环境: 操作系统:fedora 22 数据库:postgresql-9.4 安装过程使用root用户 2.安装包: postgresql94-libs-9.4.4-1PGDG.f22.x86_64.rpm postgresql94-9.4.4-1PGDG.f22.x86_64.rpm postgresql94-server-9.4.4-1PGDG.f22.x86_64.rpm 3.严格按照顺序安装: rpm -

Linux——CentOS 6.3下PostgreSQL 的安装与配置

一.简介 PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统.有些特性甚至连商业数据库 都不具备.这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户. 二.系统环境 系统平台:CentOS release 6.3 (Final) PostgreSQL 版本:PostgreSQL 9.2.4 防火墙已关闭/iptables: Firewall is not runn

CentOS 6.3下PostgreSQL 的安装与配置

一.简介 PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统.有些特性甚至连商业数据库都不具备.这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户. 二.系统环境 系统平台:CentOS release 6.3 (Final) PostgreSQL 版本:PostgreSQL 9.2.4 防火墙已关闭/iptables: Firewall is not runni