设置
wal_level
参数说明: 设置写入WAL信息量的级别。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
- 如果需要启用WAL日志归档和主备机的数据流复制,需将此参数设置为archive或hot_standby或logical。
- 如果此参数设置为minimal, archive_mode必须设置为off, hot_standby必须设置为off,max_wal_senders参数设置为0, 且需为单机环境, 否则将导致数据库无法启动。
- 如果此参数设置为archive,hot_standby必须设置为off,否则将导致数据库无法启动。但是,hot_standby在双机环境中不能设置为off,具体参见hot_standby参数说明。
取值范围: 枚举类型
minimal
优点:一些重要操作(包括创建表、创建索引、簇操作和表的复制)都能安全的跳过,这样就可以使操作变得更快。
缺点:WAL仅提供从数据库服务器崩溃或者紧急关闭状态恢复时所需要的基本信息,无法用WAL归档日志恢复数据。
archive
这个参数增加了WAL归档需要的日志信息,从而可以支持数据库的归档恢复。
- 这个参数进一步增加了在备机上运行的SQL查询的信息,这个参数只能在数据库服务重新启动后生效。
- 为了在备机上开启只读查询,wal_level必须在主机上设置成hot_standby ,并且备机必须打开hot_standby参数。hot_standby和archive级别之间的性能只有微小的差异。
logical
这个参数表示WAL日志支持逻辑复制。
默认值: minimal(安装工具默认设置为hot_standby)
fsync
参数说明: 设置Vastbase服务器是否使用fsync()系统函数(请参见wal_sync_method)确保数据的更新及时写入物理磁盘中。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
使用fsync()系统函数可以保证在操作系统或者硬件崩溃的情况下将数据恢复到一个已知的状态。
如果将此参数关闭,可能会在系统崩溃时无法恢复原来的数据,导致数据库不可用。
取值范围: 布尔型
- on表示使用fsync()系统函数。
- off表示不使用fsync()系统函数。
默认值: on
synchronous_commit
参数说明: 设置当前事务的同步方式。开启后支持从库在主库commit后可直接读取已提交的数据。
该参数属于USERSET类型参数,请参考重设参数表1中对应设置方法进行设置。
通常情况下,一个事务产生的日志的同步顺序如下:
1、主机将日志内容写入本地内存。
2、主机将本地内存中的日志写入本地文件系统。
3、主机将本地文件系统中的日志内容刷盘。
4、主机将日志内容发送给备机。
5、备机接受到日志内容,存入备机内存。
6、备机将备机内存中的日志写入备机文件系统。
7、备机将备机文件系统中的日志内容刷盘。
8、备机回放日志,完成对数据文件的增量更新。
取值范围: 枚举类型
- on:表示主机事务提交需要等待备机将对应日志刷新到磁盘。
- off:表示主机事务提交无需等待主机自身将对应日志刷新到磁盘,通常也称为异步提交。
- local:表示主机事务提交需要等待主机自身将对应日志刷新到磁盘,通常也称为本地提交。
- remote_write:表示主机事务提交需要等待备机将对应日志写到文件系统(无需刷新到磁盘)。
- remote_receive:表示主机事务提交需要等待备机接收到对应日志数据(无需写入文件系统)。
- remote_apply:表示主机事务提交需要等待备机完成对应日志的回放操作。
- true:同on。
- false:同off。
- yes:同on。
- no:同off。
- 1:同on。
- 0:同off。
- 2:同remote_apply。
synchronous_commit为off或local,并不等价于同步状态为async,而是与synchronous_standby_names的值有关,当synchronous_standby_names为空时同步状态为async。
默认值: on
wal_sync_method
参数说明: 设置向磁盘强制更新WAL数据的方法。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
如果将 fsync 关闭,这个参数的设置就没有意义,因为所有数据更新都不会强制写入磁盘。
取值范围: 枚举类型
- open_datasync表示用带O_DSYNC选项的open()打开“WAL”文件。
- fdatasync表示每次提交的时候都调用fdatasync()。(支持suse10和suse11)。
fsync_writethrough表示每次提交的时候调用fsync()强制把缓冲区任何数据写入磁盘。
由于历史原因,Vastbase允许在Windows平台上将wal_sync_method设置为fsync_writethrough,尽管它和fsync等效。
fsync表示每次提交的时候调用fsync()。(支持suse10和suse11)
open_sync表示用带O_SYNC选项的open()写“WAL”文件。(支持suse10和suse11)
默认值: fdatasync
full_page_writes
参数说明: 设置Vastbase服务器在检查点之后对页面的第一次修改时,是否将每个磁盘页面的全部内容写到WAL日志中。当增量检查点开关和enable_double_write同时打开时,则不使用full_page_writes。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
Vastbase不支持将full_page_writes设置为on。
取值范围: 布尔型
- on表示启用此特性。
- off表示关闭此特性。
默认值: off
wal_log_hints
参数说明: 设置在检查点之后对页面的第一次修改为页面上元组hint bits的修改时,是否将整个页面的全部内容写到WAL日志中。不推荐用户修改此设置。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 布尔型
- on表示整个页面全部内容写到WAL日志中。
- off表示整个页面内容不会写到WAL日志中。
默认值: on
wal_buffers
参数说明: 设置用于存放WAL数据的共享内存空间的XLOG_BLCKSZ数,XLOG_BLCKSZ的大小默认为8KB。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: -1 ~ 262144,单位8kb
- 如果设置为-1,表示wal_buffers的大小随着参数shared_buffers自动调整,为shared_buffers的1/32,最小值为8个XLOG_BLCKSZ,最大值为2048个XLOG_BLCKSZ。
- 如果设置为其他值,当小于4时,会被默认设置为4。
默认值: 2048
设置建议: 每次事务提交时,WAL缓冲区的内容都写入到磁盘中,因此设置为很大的值不会带来明显的性能提升。如果将它设置成几百兆,就可以在有很多即时事务提交的服务器上提高写入磁盘的性能。根据经验来说,默认值可以满足大多数的情况。
wal_writer_delay
参数说明: WalWriter线程的写间隔时间。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
如果时间过长可能造成WAL缓冲区的内存不足,时间过短会引起WAL不断写入,增加磁盘I/O负担。
取值范围: 整型, 1~10000(毫秒)
默认值: 200(毫秒)
commit_delay
参数说明: 表示一个已经提交的数据在WAL缓冲区中存放的时间。
该参数属于USERSET类型参数,请参考重设参数表1中对应设置方法进行设置。
- 设置为非 0 值时事务执行commit后不会立即写入WAL中,而仍存放在WAL缓冲区中,等待WalWriter线程周期性写入磁盘。
- 如果系统负载很高,在延迟时间内,其他事务可能已经准备好提交。但如果没有事务准备提交,这个延迟就是在浪费时间。
取值范围: 整型, 0~100000(微秒),其中0表示无延迟。
默认值: 0
commit_siblings
参数说明: 当一个事务发出提交请求时,如果数据库中正在执行的事务数量大于此参数的值,则该事务将等待一段时间(commit_delay的值),否则该事务则直接写入WAL。
该参数属于USERSET类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型, 0~1000
默认值: 5
wal_block_size
参数说明: 说明WAL日志段文件中日志页面的大小。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
取值范围: 整型,8192,单位为Byte。
默认值: 8192
wal_segment_size
参数说明: 说明WAL日志段文件的大小。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
取值范围: 整型,2048,单位为8KB。
默认值: 2048,即16MB (2048 * 8KB)
walwriter_cpu_bind
参数说明: 绑定到WAL写入线程的CPU核,与thread pool配合使用。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型,-1 ~ 2147483647
默认值: -1
walwriter_sleep_threshold
参数说明: xlogflusher进入sleep之前空闲xlog刷新的次数,达到阈值会休眠。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型,1~50000
默认值: 500
wal_file_init_num
参数说明: WAL编写器将创建的xlog段文件的数量。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型,0~1000000
默认值: 10
force_promote
参考说明: 备机强切功能开关。
备机强切在集群故障状态下,以丢失部分数据为代价换取集群尽可能快的恢复服务,是集群状态为不可用时的一个逃生方法,不建议频繁触发。如果操作者不清楚备机强切后丢失数据对业务的影响,请勿使用本功能。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型,0或1
0表示关闭,1表示开启
默认值: 0
wal_flush_timeout
参数说明: Xlog刷盘自适应控制的刷盘I/O遍历WalInsertStatusTable等待的最大时间,即遍历WalInsertStatusTable的超时时间。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
- 如果wal_flush_timeout值过大,即时间过长可能造成Xlog刷盘频率降低,降低Xlog处理性能。
- 遍历WalInsertStatusTable是数据库内部的实现,所以通过合理设置wal_flush_timeout的值来控制I/O频率比较困难。
取值范围: 整型, 0 ~ 90000000(微秒)
默认值: 2(微秒)
wal_flush_delay
参数说明: 遍历WalInsertStatusTable时,遇到WAL_NOT_COPIED状态entry时等待的时间间隔。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
参数wal_flush_delay值建议不要设置过大,原因如下:
- wal_flush_delay和wal_flush_timeout两个参数综合作用影响事务的提交。
- 一旦触发WALWriter休眠逻辑后,因为事务提交的等待时长为该参数配设置的值,则当wal_flush_delay值设置过大时等待时间将过长。
取值范围: 整型, 0 ~ 90000000(微秒)
默认值: 1(微秒)
vb_wal_directory
参数说明: xlog日志的存放路径。
xlog的默认存放路径在$PGDATA/pg_xlog下,如有更改路径的需求,可以修改postgresql.conf中的参数vb_wal_directory。新的存放路径应是存在的且可访问的。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
默认值: $PGDATA/pg_xlog
autocommit
参数说明:设置事务是否自动提交。
该参数属于USERSET类型参数,为固定参数,用户无法修改此参数,只能查看。
取值范围:布尔型
- on表示开启事务自动提交。
- off表示关闭事务自动提交。
默认值:on