pgsql数据库默认配置事务类型_postgresql配置参数和概念解释

1.高可用

服务可用时间量,冗余是高可用的基础

2.备用数据库

备用数据库的想法是保留始终具有相同数据的生产数据库的副本,并且可以在故障发生时使用备份数据库。有以下几种方式对备用数据库进行分类。

根据复制的性质:

物理备份数据库:复制磁盘块

逻辑备份数据:复制数据流更改

备份的同步性:

异步:存在数据丢失的可能性

同步:不存在数据丢失的可能性,主设备的提交等待备用设备的响应。

3.件目录结构

postgresql的磁盘布局:

data/base

存放各数据库实例对应文件夹,命名方式是数据库的OID,select oid,datname from pg_database;可以查询每个数据库的OID,对应的可以在base目录下找到这个数据库的文件夹。

数据表使用表名对应的relfilenode作为文件名存放在数据库文件夹下,select relfilenode,relname from pg_class;

可以查询表的relfilenode,然后在相应的数据库文件夹下可以看到这个表的文件,该文件用于存储表的数据,最大1G,超出自动扩展,扩展名为relfilenode.1,relfilenode.2 ...

为了提高I/O性能,pg总是以8K大小的块执行IO。因此数据文件总是以8K的步长增长。(物理复制时,双方需要使用相同的块大小)

global  -全局数据

包括全局系统表

pg_clog  -提交日志

提交日志是一个工作数据库实例的一个重要组成部分。它存储系统上进行的事物的状态。

一个事物有四种状态(TRANSACTION_STATUS_IN_PROGRESS,TRANSACTION_STATUS_COMMITTED,TRANSACTION_STATUS_ABORTED,TRANSACTION_STATUS_SUB_COMMITTED),

如果一个事物的提交日志的状态是不可用,postgresql将不知道是否应该被看到。

pg_hba.conf  -基于主机的网络配置

常用认证方式

trust

ident

md5

pg_ident.conf  -身份认证

pg_notify-监听、通知数据

系统存储关于监听、通知的信息(异步后端接口)

pg_serial-关于提交序列化事物的信息

序列化事物的信息存储在这里。我们必须在磁盘上存储序列化事物提交信息,以确保长时间运行的事物不会膨胀内存,内部采用一个简单的SLRU结构来跟踪这些事物

pg_snapshot-输出快照

pg_stat_tmp-临时统计数据

该信息被大多数pg_stat_*系统视图所需要

pg_subtrans -子事物数据

pg_xlog  postgresql的事物日志(WAL)

WAL(Write Ahead Log)和XLOG是一个事物的两个名字。默认事物日志文件大小16M。

xlog不可能无限增大,需要删除无用的xlog,原则:如果xlog文件中的所有更改也被放到数据文件中,xlog才可以被截断(删除)。需要检查点的配置

postgresql.conf  -pg配置文件

4.配置参数

shared_buffers

数据库服务使用的共享内存缓冲区。默认值128MB。(一般使用Mem的25%,不超过40%,因为pg还要依赖于os cache)

background writer

pg的一个独立子进程,用于将shared_buffers中的dirty buffer写入磁盘。(数据的修改不用立即写入磁盘,因为写入了wal日志,可以用于故障恢复)

background writer会根据LRU链表,扫描shared buffers,如果发现脏页,就会调用系统write,写入磁盘。具体调用策略见下面参数

bgwriter_delay

指定background writer将dirty buffer写入磁盘的频率,默认200ms,即200ms写一次,写入周期200ms。

bgwriter_lru_maxpages

指定一次写入周期 写入的dirty buffer的最大数量(单位buffers),默认值100

bgwriter_lru_multiplier

一次写入周期要写到磁盘的dirt buffers的数量T,是基于上一个周期内server进程需要的新的buffers数量N。

bgwriter_lru_multiplier是一个乘法因子p,T = N * p;较大的值为峰值提供了缓冲,较小的值则需要服务器进程完成写入。

例:

上一个写入周期内服务器使用了100个new buffer(100次写产生不同的脏数据),bgwriter_lru_multiplier使用了默认值2.那么这次会将100*2个dirty buffers写到磁盘中,也就是腾出了200个干净的buffers,

如果再下一次写入周期前,服务器申请的buffers数量小于这个值,则自然够用,如果大于200,那么需要服务器自己去触发将dirty buffers写入磁盘。

备注

上面的写入磁盘行为指的是普通意义的向磁盘文件写,但是会被操作系统缓存,所以实际行为可能没有写到磁盘中。

bgwriter_flush_after

当超过bgwriter_flush_after bytes的数据被bgwriter写时,强制OS将缓存数据写入物理磁盘。默认值为512KB

write ahead log(WAL)

wal_level

指定写入到wal中的信息,默认是minimal,只写从crash中恢复或者快速shutdown需要的信息。

replica 是在minimal的基础上

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值