PostgreSQL11以前改变wal-segsize(WAL段大小)必须在编译时通过–with-wal-segsize参数确定,编译后不可更改.
#PostgreSQL11之前的版本
#数据块按8K划分(--with-blocksize,单位为K,默认为8K)
#WAL块尺寸按8k划分(--with-wal-blocksize,单位为K,默认为8K)
#数据文件按1G一个分解(--with-segsize,单位为G,默认为1G)
#WAL段尺寸按16MB划分(--with-wal-segsize,单位为K,默认为16MB)
./configure --with-blocksize=8--with-wal-blocksize=8--with-segsize=1 --with-wal-segsize=16
PostgreSQL11取消了编译参数–with-wal-segsize.使用pg_resetwal(–wal-segsize)更改WAL段大小.
#PostgreSQL11先编译程序
#数据块按8K划分(--with-blocksize,单位为K,默认为8K)
#WAL块尺寸按8k划分(--with-wal-blocksize,单位为K,默认为8K)
#数据文件按1G一个分解(--with-segsize,单位为G,默认为1G)
./configure --with-blocksize=8--with-wal-blocksize=8--with-segsize=1
编译完成并初始化后使用pg_resetwal修改wal-segsize
#首先停止PostgreSQL服务
pg_ctl -D /data/pgdata stop -m fast
#修改wal-segsize段大小,默认单位是MB,值必须是2的幂并且在1到1024MB之间
pg_resetwal --wal-segsize=32 /data/pgdata;
查看
show block_size;
show wal_block_size;
show segment_size;
show wal_segment_size;
ls /data/pgdata/pg_wal -lh