postgresql 9.6 的 wal_compression 设置为 on/off 的对比

wal_compression = off

–查看当前wal_compression设置

select *
from pg_settings ps
where 1=1
and ps.name like '%compress%'
;

name : wal_compression
setting : off

–查看最近的wal

select t1.file,
       t1.file_ls,
       (pg_stat_file(t1.file)).modification as last_update_time,
       round( ((pg_stat_file(t1.file)).size)/1024/1024*1.0,1) as log_size_mb
  from (select dir||'/'||pg_ls_dir(t0.dir) as file,
               pg_ls_dir(t0.dir) as file_ls
          from ( select '/var/lib/pgsql/9.6/data/pg_xlog'::text as dir
                 --需要修改这个物理路径
                    ) t0
            ) t1 
  where 1=1
  order by (pg_stat_file(file)).modification desc
;

file : /var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000DA
file_ls : 0000000100000005000000DA
last_update_time: 2017-12-06 13:58:43
log_size_mb : 16

–创建测试表

create table tmp_wal_compress (
 id int8,
 random_char  varchar(50),
 random_int   int8
)
;

–切换pg_xlog

select pg_switch_xlog(); 

–插入100w条数据

insert into tmp_wal_compress
(id,
 random_char,
 random_int
)
SELECT generate_series(1,1000000) as key,
       md5( (random()*1000000)::text) as random_char,
       (random()*1000000000.)::int8 as random_int

–查看最近的wal

select t1.file,
       t1.file_ls,
       (pg_stat_file(t1.file)).modification as last_update_time,
       round( ((pg_stat_file(t1.file)).size)/1024/1024*1.0,1) as log_size_mb
  from (select dir||'/'||pg_ls_dir(t0.dir) as file,
               pg_ls_dir(t0.dir) as file_ls
          from ( select '/var/lib/pgsql/9.6/data/pg_xlog'::text as dir
                 --需要修改这个物理路径
                    ) t0
            ) t1 
  where 1=1
  order by (pg_stat_file(file)).modification desc
;

file : /var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000E1
file_ls : 0000000100000005000000E1
last_update_time: 2017-12-06 14:03:23
log_size_mb : 16

生成了7个wal

/var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000E1
/var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000E0
/var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000DF
/var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000DE
/var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000DD
/var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000DC
/var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000DB

wal_compression = on

–开启wal_compression

alter system set wal_compression = ‘on’;

/etc/init.d/postgresql-9.6 stop
/etc/init.d/postgresql-9.6 start

–查看当前wal_compression设置

select *
from pg_settings ps
where 1=1
and ps.name like '%compress%'
;

name : wal_compression
setting : on

–清空表

truncate table tmp_wal_compress;

–切换pg_xlog

select pg_switch_xlog(); 

–查看最近的wal

select t1.file,
       t1.file_ls,
       (pg_stat_file(t1.file)).modification as last_update_time,
       round( ((pg_stat_file(t1.file)).size)/1024/1024*1.0,1) as log_size_mb
  from (select dir||'/'||pg_ls_dir(t0.dir) as file,
               pg_ls_dir(t0.dir) as file_ls
          from ( select '/var/lib/pgsql/9.6/data/pg_xlog'::text as dir
                 --需要修改这个物理路径
                    ) t0
            ) t1 
  where 1=1
  order by (pg_stat_file(file)).modification desc
;

file : /var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000E9
file_ls : 0000000100000005000000E9
last_update_time: 2017-12-06 14:16:07
log_size_mb : 16

–插入100w条数据

insert into tmp_wal_compress
(id,
 random_char,
 random_int
)
SELECT generate_series(1,1000000) as key,
       md5( (random()*1000000)::text) as random_char,
       (random()*1000000000.)::int8 as random_int

–查看最近的wal

select t1.file,
       t1.file_ls,
       (pg_stat_file(t1.file)).modification as last_update_time,
       round( ((pg_stat_file(t1.file)).size)/1024/1024*1.0,1) as log_size_mb
  from (select dir||'/'||pg_ls_dir(t0.dir) as file,
               pg_ls_dir(t0.dir) as file_ls
          from ( select '/var/lib/pgsql/9.6/data/pg_xlog'::text as dir
                 --需要修改这个物理路径
                    ) t0
            ) t1 
  where 1=1
  order by (pg_stat_file(file)).modification desc
;

file : /var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000EF
file_ls : 0000000100000005000000EF
last_update_time: 2017-12-06 14:16:17
log_size_mb : 16

生成了6个wal

/var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000EF
/var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000EE
/var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000ED
/var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000EC
/var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000EB
/var/lib/pgsql/9.6/data/pg_xlog/0000000100000005000000EA

看上去开启wal_compression的效果并不是太好 ,再仔细看下官方文档了解。

原文地址:https://www.cnblogs.com/ctypyb2002/p/9793094.html