postgresql中wal_level的三个参数用法说明
wal_level中有三个主要的参数:minimal、archive和hot_standby
1、minimal是默认的值,它仅写入崩溃或者突发关机时所需要的信息(不建议使用)。
2、archive是增加wal归档所需的日志(最常用)。
3、hot_standby是在备用服务器上增加了运行只读查询所需的信息,一般实在流复制的时候使用到。
补充:postgresql wal相关参数
配置文件
# - 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 空间
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
下一篇: 腾讯启动春节后在家办公机制
推荐阅读
-
TCP/IP协议中的三个参数
-
postgresql 中round函数的用法说明
-
Pyecharts 中Geo函数常用参数的用法说明
-
postgreSQL中的row_number() 与distinct用法说明
-
PostgreSQL中的COMMENT用法说明
-
【转】三个案例带你看懂LayoutInflater中inflate方法两个参数和三个参数的区别
-
显卡中的参数里,显存、位宽、频率三个参数哪个参数比较重要?
-
VBS中InStrRev函数的第三个参数(Start)使用注意事项
-
PostgreSQL中的VACUUM命令用法说明
-
pandas pd.read_csv()函数中parse_dates()参数的用法说明