postgresql WAL相关参数

作者:瀚高PG实验室 (Highgo PG Lab)

配置文件

# - Settings -

wal_level = minimal                    # minimal, replica, orlogical

                                    # (changerequires restart)

#fsync = on                           # flush data to disk for crash safety

                                     # (turningthis off can cause

                                     # unrecoverable datacorruption)

#synchronous_commit =on               # synchronization level;

                                     # off, local,remote_write, remote_apply

,or on

#wal_sync_method =fsync               # the default is thefirst option

                                     # supported by theoperating system:

                                     #  open_datasync

                                     #   fdatasync (default on Linux)

                                     #   fsync

                                     #   fsync_writethrough

                                     #   open_sync

full_page_writes =on                   # recover from partial page writes

#wal_compression =off                 # enable compression of full-pagewrites

#wal_log_hints =off                   # also do full pagewrites of non-critic

al updates

                                   # (change requiresrestart)

#wal_buffers = -1                    # min 32kB, -1 sets basedon shared_buffers

                                  # (change requiresrestart)

#wal_writer_delay = 200ms            # 1-10000 milliseconds

#wal_writer_flush_after= 1MB         # 0 disables

#commit_delay = 0                   # range 0-100000, inmicroseconds

#commit_siblings =5                 # range 1-1000

# - Checkpoints -

#checkpoint_timeout =5min           # range 30s-1d

#max_wal_size = 1GB

#min_wal_size = 80MB

#checkpoint_completion_target= 0.5     # checkpoint target duration,0.0 - 1.0

#checkpoint_flush_after= 0             # 0 disables                                        #default is 256kB on linux, 0 otherwise

#checkpoint_warning =30s               # 0 disables

wal_level:
控制wal存储的级别。wal_level决定有多少信息被写入到WAL中。默认值是最小的(minimal),其中只写入从崩溃或立即关机中恢复的所需信息。replica 增加 wal 归档信息同时包括只读服务器需要的信息。(9.6 中新增,将之前版本的 archive 和 hot_standby合并) 

fsync:
该参数直接控制日志是否先写入磁盘。默认值是ON(先写入)。开启该值时表明,更新数据写入磁盘时系统必须等待WAL的写入完成。可以配置该参数为OFF,更新数据写入磁盘完全不用等待WAL的写入完成,没有了等待的时间,显然接下来的工作能够更早的去做,节省了时间,提高了性能。其直接隐患是无法保证在系统崩溃时最近的事务能够得到恢复,也就无法保证相关数据的真实与正确性。

synchronous_commit:
该参数表明是否等待WAL完成后才返回给用户事务的状态信息。默认值是ON,表明必须等待WAL完成后才返回事务状态信息。配置OFF值能够更快的反馈回事务状态。因参数只是控制事务的状态反馈,因此对于数据的一致性不存在风险。但事务的状态信息影响着数据库的整个状态。该参数可以灵活的配置,对于业务没有严谨要求的事务可以配置为OFF,能够为系统的性能带来不小的提升。

wal_sync_method:
WAL 写入磁盘的控制方式,默认值是fsync。可选用值:open_datasync,fdatasync,fsync_writethrough,fsync,open_sync。一般采用默认值即可,对于裸设备或文件系统的可选配置,在实际的使用中所带来的方便相对fsync很有限。

full_page_writes:
参数表明是否将整个page写入WAL。postgresql中数据处理过程中的数据只保存在内存和WAL中,在内存中的整个page中包含更新提交和没有提交的,如果不将整个page写入WAL中,在介质恢复的时候WAL中记录的数据不足以实现完整的恢复(说白了就是无法实现介质恢复时事务的回滚)。 

wal_buffers:
用于存放WAL数据的内存空间,最小32K。

wal_writer_delay: 
WAL writer进程的间歇时间。默认值是200ms。准确的配置应该根据自身系统的运行状况。如果时间过长可能造成WAL buffer的内存不足;反之过小将会引起WAL的不断的写入,对磁盘的IO也是很大考验。

wal_writer_flush_after 
wal write的字节数超过配置的阈值(wal_writer_flush_after)时,触发fsync,默认值为1MB,如果设置为0,关闭该特性(9.6版本新增的参数)

commit_delay:
表示一个已经提交的数据在WAL buffer中存放的时间,单位ms,默认值是0,不用延迟。非0值表示可能存在多个事务的WAL同时写入磁盘。如果设置为非0,表明了某个事务执行 commit后不会立即写入WAL中,而仍存放在WAL buffer中,这样对于后面的事务申请WAL buffer时非常不利,尤其是提交事务较多的高峰期,可能引起WAL buffer内存不足。如果内存足够大,可以尽量延长该参数值,能够使数据集中写入这样降低了系统的IO,提高了性能。同样如果此时崩溃数据面临着丢失的危险。

commit_siblings
该参数还决定了commit_delay的有效性。系统默认值是5。表示当一个事务发出提交请求,此时数据库中正在执行的事务数量大于5,则该事务将等待一段时间(commit_delay的值),反之,该事务则直接写入WAL。

checkpoint_timeout 
生成检查点的最大的间隔时间。
checkpoint_completion_target 
参数表示checkpoint的完成目标,系统默认值是0.5,也就是说每个checkpoint需要在checkpoints间隔时间的50%内完成。
PostgreSQL 9.5 废弃了checkpoint_segments 参数, 并引入max_wal_size 和 min_wal_size 参数, 通过max_wal_size和checkpoint_completion_target参数来控制产生多少个XLOG后触发检查点, 通过min_wal_size和max_wal_size参数来控制哪些XLOG可以循环使用.

min_wal_size :最小的wal 空间
————————————————
版权声明:本文为CSDN博主「瀚高PG实验室」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/pg_hgdb/article/details/79069407

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值