pg_squeeze使用

 

1.查看相关的版本
需要提前安装pg的yum

[root@localhost]#yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
[root@localhost]#yum install epel-release
[root@localhost pg_wal]# yum list pg_squeeze*
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * epel: hkg.mirror.rackspace.com
 * extras: mirrors.njupt.edu.cn
 * updates: mirrors.ustc.edu.cn
Available Packages
pg_squeeze10.x86_64                                            1.3.0-1.rhel7                                   pgdg10
pg_squeeze11.x86_64                                            1.3.0-1.rhel7                                   pgdg11
pg_squeeze12.x86_64                                            1.3.0-1.rhel7                                   pgdg12
pg_squeeze13.x86_64                                            1.3.0-1.rhel7                                   pgdg13
pg_squeeze_10.x86_64                                           1.4.1-2.rhel7                                   pgdg10
pg_squeeze_11.x86_64                                           1.5.0-1.rhel7                                   pgdg11
pg_squeeze_11-llvmjit.x86_64                                   1.5.0-1.rhel7                                   pgdg11
pg_squeeze_12.x86_64                                           1.5.0-1.rhel7                                   pgdg12
pg_squeeze_12-llvmjit.x86_64                                   1.5.0-1.rhel7                                   pgdg12
pg_squeeze_13.x86_64                                           1.5.0-1.rhel7                                   pgdg13
pg_squeeze_13-llvmjit.x86_64                                   1.5.0-1.rhel7                                   pgdg13
pg_squeeze_14.x86_64                                           1.5.0-1.rhel7                                   pgdg14
pg_squeeze_14-llvmjit.x86_64                                   1.5.0-1.rhel7                                   pgdg14
pg_squeeze_15.x86_64                                           1.5.0-1.rhel7                                   pgdg15
pg_squeeze_15-llvmjit.x86_64                                   1.5.0-1.rhel7                                   pgdg15

 

2.安装
[root@localhost]# yum install pg_squeeze12.x86_64

3.添加扩展
su - postgres
vi /opt/pg12/data/postgresql.conf

shared_preload_libraries = 'pg_repack,pg_squeeze' # (change requires restart)

重新启动pg
[root@localhost ~]# systemctl stop postgresql-12
[root@localhost ~]# systemctl start postgresql-12

 

4.添加插件

postgres=# create extension pg_squeeze;
CREATE EXTENSION

postgres=# \dn
    List of schemas
    Name    |  Owner   
------------+----------
 public     | postgres
 repack     | postgres
 squeeze    | postgres
 tiger      | postgres
 tiger_data | postgres
 topology   | postgres
(6 rows)

 

这个时候会生成一个schema=squeeze,有如下的表

postgres=# set search_path to 'squeeze';
SET
postgres=# \dt
              List of relations
 Schema  |      Name       | Type  |  Owner   
---------+-----------------+-------+----------
 squeeze | errors          | table | postgres
 squeeze | log             | table | postgres
 squeeze | tables          | table | postgres
 squeeze | tables_internal | table | postgres
 squeeze | tasks           | table | postgres
(5 rows)

 

5.创建测试表
postgres=# create table test(id int primary key);
postgres=# insert into test select generate_series(1,5000000);

查看表的大小
postgres=# SELECT pg_size_pretty(pg_total_relation_size('test'));
pg_size_pretty
----------------
280 MB
(1 row)

6.向squeeze.tables插入一条数据,定期清理test表,5分钟一次
insert into squeeze.tables (tabschema, tabname, schedule, free_space_extra) values ('public', 'test', ('{00,59}', '{00,23}', NULL, NULL, NULL), '10');

7.启动pg_squeeze的进程需要调用
SELECT squeeze.start_worker();
关闭命令:SELECT squeeze.stop_worker();

8.查看当前表的膨胀情况
select * from squeeze.tables_internal;


此时test表大小

postgres=# \dt+ test;
List of relations
Schema | Name | Type | Owner | Size | Description
--------+------+-------+----------+--------+-------------
public | test | table | postgres | 173 MB |
(1 row)


9.删除test表一半数据
postgres=# delete from test where id < 2500000;
DELETE 2499999

再次查看表的膨胀情况
select * from squeeze.tables_internal;

 

-- The End --

 

posted @ 2022-12-05 09:23  slnngk  阅读(163)  评论(0编辑  收藏  举报