pg_partman
os: centos 7.4
db: postgresql 11.6
之前分区组件一直使用的 pg_pathman,今天在看 citus 的文档时发现还有个 pg_partman 组件
版本
# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
#
# yum list installed |grep -i postgresql
postgresql11.x86_64 11.6-2PGDG.rhel7 @pgdg11
postgresql11-contrib.x86_64 11.6-2PGDG.rhel7 @pgdg11
postgresql11-debuginfo.x86_64 11.6-2PGDG.rhel7 @pgdg11
postgresql11-devel.x86_64 11.6-2PGDG.rhel7 @pgdg11
postgresql11-docs.x86_64 11.6-2PGDG.rhel7 @pgdg11
postgresql11-libs.x86_64 11.6-2PGDG.rhel7 @pgdg11
postgresql11-llvmjit.x86_64 11.6-2PGDG.rhel7 @pgdg11
postgresql11-odbc.x86_64 12.00.0000-1PGDG.rhel7 @pgdg11
postgresql11-plperl.x86_64 11.6-2PGDG.rhel7 @pgdg11
postgresql11-plpython.x86_64 11.6-2PGDG.rhel7 @pgdg11
postgresql11-pltcl.x86_64 11.6-2PGDG.rhel7 @pgdg11
postgresql11-server.x86_64 11.6-2PGDG.rhel7 @pgdg11
postgresql11-tcl.x86_64 2.4.0-2.rhel7.1 @pgdg11
postgresql11-test.x86_64 11.6-2PGDG.rhel7 @pgdg11
#
# su - postgres
Last login: Mon Dec 16 20:13:53 CST 2019 on pts/0
-bash-4.2$ psql
psql (11.6)
Type "help" for help.postgres=# select version();version
---------------------------------------------------------------------------------------------------------PostgreSQL 11.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
(1 row)postgres=#
下载、安装、编译
使用的是 yum 方式安装的 postgresql,所以使用 root 用户安装(或者 postgres 用户使用 sudo)
# cd /var/lib/pgsql/
# wget https://github.com/pgpartman/pg_partman/archive/v4.2.2.tar.gz
# tar -zxvf ./v4.2.2.tar.gz
# ls -l
total 2552
drwxr-xr-x 8 root root 211 Oct 16 21:43 pg_partman-4.2.2# cd pg_partman-4.2.2/
# make
/bin/sh: pg_config: command not found
/bin/sh: pg_config: command not found
make: pg_config: Command not found
make: *** No rule to make target `install'. Stop.
pg_config 不在 PATH下
# export PATH=/usr/pgsql-11/bin:${PATH}
# which pg_config
/usr/pgsql-11/bin/pg_config# make/opt/rh/llvm-toolset-7/root/usr/bin/clang -Wno-ignored-attributes -fno-strict-aliasing -fwrapv -O2 -I. -I./ -I/usr/pgsql-11/include/server -I/usr/pgsql-11/include/internal -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include -flto=thin -emit-llvm -c -o src/pg_partman_bgw.bc src/pg_partman_bgw.c
make: /opt/rh/llvm-toolset-7/root/usr/bin/clang: Command not found
make: *** [src/pg_partman_bgw.bc] Error 127
报错 /opt/rh/llvm-toolset-7/root/usr/bin/clang: Command not found 需要按照如下方式解决
<</opt/rh/llvm-toolset-7/root/usr/bin/clang: Command not found>>
再次编译安装
# makegcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC -I. -I./ -I/usr/pgsql-11/include/server -I/usr/pgsql-11/include/internal -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include -c -o src/pg_partman_bgw.o src/pg_partman_bgw.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC -L/usr/pgsql-11/lib -Wl,--as-needed -L/usr/lib64/llvm5.0/lib -L/usr/lib64 -Wl,--as-needed -Wl,-rpath,'/usr/pgsql-11/lib',--enable-new-dtags -shared -o src/pg_partman_bgw.so src/pg_partman_bgw.o
/opt/rh/llvm-toolset-7/root/usr/bin/clang -Wno-ignored-attributes -fno-strict-aliasing -fwrapv -O2 -I. -I./ -I/usr/pgsql-11/include/server -I/usr/pgsql-11/include/internal -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include -flto=thin -emit-llvm -c -o src/pg_partman_bgw.bc src/pg_partman_bgw.c# make install/bin/mkdir -p '/usr/pgsql-11/share/extension'
/bin/mkdir -p '/usr/pgsql-11/share/extension'
/bin/mkdir -p '/usr/pgsql-11/lib'
/bin/mkdir -p '/usr/pgsql-11/doc/extension'
/bin/mkdir -p '/usr/pgsql-11/bin'
/bin/install -c -m 644 .//pg_partman.control '/usr/pgsql-11/share/extension/'
/bin/install -c -m 644 .//updates/pg_partman--2.5.0--2.5.1.sql .//updates/pg_partman--2.3.2--2.3.3.sql .//updates/pg_partman--2.6.2--2.6.3.sql .//updates/pg_partman--4.1.0--4.2.0.sql .//updates/pg_partman--2.2.1--2.2.2.sql .//updates/pg_partman--1.8.7--2.0.0.sql .//updates/pg_partman--2.2.3--2.3.0.sql .//updates/pg_partman--1.8.0--1.8.1.sql .//updates/pg_partman--2.0.0--2.1.0.sql .//updates/pg_partman--2.2.0--2.2.1.sql .//updates/pg_partman--1.3.0--1.4.0.sql .//updates/pg_partman--2.3.3--2.3.4.sql .//updates/pg_partman--4.2.1--4.2.2.sql .//updates/pg_partman--1.8.2--1.8.3.sql .//updates/pg_partman--1.8.1--1.8.2.sql .//updates/pg_partman--1.7.0--1.7.1.sql .//updates/pg_partman--1.1.0--1.2.0.sql .//updates/pg_partman--2.5.1--2.6.0.sql .//updates/pg_partman--0.1.2--0.2.0.sql .//updates/pg_partman--2.3.0--2.3.1.sql .//updates/pg_partman--3.0.2--3.1.0.sql .//updates/pg_partman--0.3.1--0.3.2.sql .//updates/pg_partman--0.2.0--0.3.0.sql .//updates/pg_partman--3.2.0--3.2.1.sql .//updates/pg_partman--1.7.1--1.7.2.sql .//updates/pg_partman--2.3.4--2.4.0.sql .//updates/pg_partman--0.3.0--0.3.1.sql .//updates/pg_partman--4.2.0--4.2.1.sql .//updates/pg_partman--1.4.5--1.5.0.sql .//updates/pg_partman--3.0.1--3.0.2.sql .//updates/pg_partman--1.8.8--2.0.0.sql .//updates/pg_partman--1.5.0--1.5.1.sql .//updates/pg_partman--3.1.1--3.1.2.sql .//updates/pg_partman--1.2.0--1.3.0.sql .//updates/pg_partman--1.4.3--1.4.4.sql .//updates/pg_partman--3.0.0--3.0.1.sql .//updates/pg_partman--1.8.6--1.8.7.sql .//updates/pg_partman--3.1.0--3.1.1.sql .//updates/pg_partman--2.4.0--2.4.1.sql .//updates/pg_partman--1.7.2--1.8.0.sql .//updates/pg_partman--3.1.2--3.1.3.sql .//updates/pg_partman--0.4.1--0.4.2.sql .//updates/pg_partman--1.5.1--1.6.0.sql .//updates/pg_partman--2.6.4--3.0.0.sql .//updates/pg_partman--3.2.1--4.0.0.sql .//updates/pg_partman--2.3.1--2.3.2.sql .//updates/pg_partman--0.1.1--0.1.2.sql .//updates/pg_partman--0.4.0--0.4.1.sql .//updates/pg_partman--1.8.7--1.8.8.sql .//updates/pg_partman--2.6.3--2.6.4.sql .//updates/pg_partman--0.1.0--0.1.1.sql .//updates/pg_partman--1.0.0--1.1.0.sql .//updates/pg_partman--1.6.1--1.7.0.sql .//updates/pg_partman--1.4.4--1.4.5.sql .//updates/pg_partman--1.8.4--1.8.5.sql .//updates/pg_partman--2.4.1--2.5.0.sql .//updates/pg_partman--0.3.2--0.4.0.sql .//updates/pg_partman--2.1.0--2.2.0.sql .//updates/pg_partman--1.6.0--1.6.1.sql .//updates/pg_partman--1.4.1--1.4.2.sql .//updates/pg_partman--1.4.2--1.4.3.sql .//updates/pg_partman--4.0.0--4.1.0.sql .//updates/pg_partman--1.8.3--1.8.4.sql .//updates/pg_partman--3.1.3--3.2.0.sql .//updates/pg_partman--2.2.2--2.2.3.sql .//updates/pg_partman--1.4.0--1.4.1.sql .//updates/pg_partman--2.6.1--2.6.2.sql .//updates/pg_partman--0.4.2--1.0.0.sql .//updates/pg_partman--1.8.5--1.8.6.sql .//updates/pg_partman--2.6.0--2.6.1.sql .//sql/pg_partman--4.2.2.sql '/usr/pgsql-11/share/extension/'
/bin/install -c -m 755 src/pg_partman_bgw.so '/usr/pgsql-11/lib/'
/bin/mkdir -p '/usr/pgsql-11/lib/bitcode/src/pg_partman_bgw'
/bin/mkdir -p '/usr/pgsql-11/lib/bitcode'/src/pg_partman_bgw/src/
/bin/install -c -m 644 src/pg_partman_bgw.bc '/usr/pgsql-11/lib/bitcode'/src/pg_partman_bgw/src/
cd '/usr/pgsql-11/lib/bitcode' && /usr/lib64/llvm5.0/bin/llvm-lto -thinlto -thinlto-action=thinlink -o src/pg_partman_bgw.index.bc src/pg_partman_bgw/src/pg_partman_bgw.bc
/bin/install -c -m 644 .//doc/migration_to_partman.md .//doc/pg_partman.md .//doc/pg_partman_howto.md '/usr/pgsql-11/doc/extension/'
/bin/install -c -m 755 .//bin/common/*.py '/usr/pgsql-11/bin/'
查看生成的文件
# ls -l /usr/pgsql-11/lib |grep -i pg_part
-rwxr-xr-x 1 root root 59112 Dec 18 09:51 pg_partman_bgw.so# ls -l /usr/pgsql-11/share/extension/ |grep -i pg_part-rw-r--r-- 1 root root 135485 Dec 18 09:51 pg_partman--4.0.0--4.1.0.sql
-rw-r--r-- 1 root root 120577 Dec 18 09:51 pg_partman--4.1.0--4.2.0.sql
-rw-r--r-- 1 root root 13967 Dec 18 09:51 pg_partman--4.2.0--4.2.1.sql
-rw-r--r-- 1 root root 9194 Dec 18 09:51 pg_partman--4.2.1--4.2.2.sql
-rw-r--r-- 1 root root 310105 Dec 18 09:51 pg_partman--4.2.2.sql
-rw-r--r-- 1 root root 111 Dec 18 09:51 pg_partman.control
使用
# vi /var/lib/pgsql/11/data/postgresql.conf shared_preload_libraries = 'pg_partman_bgw' # systemctl restart postgresql-11.service
# su - postgres
$ psqlpostgres=# select * from pg_available_extensions where name like 'pg_part%';name | default_version | installed_version | comment
------------+-----------------+-------------------+------------------------------------------------------pg_partman | 4.2.2 | | Extension to manage partitioned tables by time or ID
(1 row)postgres=# create extension pg_partman;
CREATE EXTENSION
postgres=# \dxList of installed extensionsName | Version | Schema | Description
------------+---------+------------+------------------------------------------------------pg_partman | 4.2.2 | public | Extension to manage partitioned tables by time or IDplpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 rows)postgres=# \dx+ pg_partmanObjects in extension "pg_partman"Object description
----------------------------------------------------------------------------------------------------------------------------function apply_cluster(text,text,text,text)function apply_constraints(text,text,boolean,bigint,boolean)function apply_foreign_keys(text,text,bigint,boolean)function apply_privileges(text,text,text,text,bigint)function apply_publications(text,text,text)function autovacuum_off(text,text,text,text)function autovacuum_reset(text,text,text,text)function check_automatic_maintenance_value(text)function check_control_type(text,text,text)function check_default(boolean)function check_epoch_type(text)function check_name_length(text,text,boolean)function check_partition_type(text)function check_subpartition_limits(text,text)function check_subpart_sameconfig(text)function create_function_id(text,bigint)function create_function_time(text,bigint)function create_parent(text,text,text,text,text[],integer,text,text,boolean,text,text,text[],boolean,text,boolean,boolean)function create_partition_id(text,bigint[],boolean,boolean)function create_partition_time(text,timestamp with time zone[],boolean,boolean)function create_sub_parent(text,text,text,text,text,text[],integer,text,boolean,text,text,boolean,boolean,boolean)function create_trigger(text)function drop_constraints(text,text,boolean)function drop_partition_column(text,text)function drop_partition_id(text,bigint,boolean,boolean,text)function drop_partition_time(text,interval,boolean,boolean,text)function inherit_template_properties(text,text,text)function partition_data_id(text,integer,bigint,numeric,text,boolean,text)function partition_data_proc(text,text,integer,integer,text,text,integer,integer,boolean)function partition_data_time(text,integer,interval,numeric,text,boolean,text)function reapply_constraints_proc(text,boolean,boolean,integer,boolean)function reapply_privileges(text)function run_maintenance_proc(integer,boolean,boolean,boolean)function run_maintenance(text,boolean,boolean,boolean)function show_partition_info(text,text,text)function show_partition_name(text,text)function show_partitions(text,text,boolean)function stop_sub_partition(text,boolean)function undo_partition_proc(text,text,integer,integer,text,boolean,integer,integer,boolean)function undo_partition(text,integer,text,boolean,numeric,text)table custom_time_partitionstable part_configtable part_config_subtype check_default_tableview table_privs
(45 rows)postgres=# select name,setting from pg_settings where name like 'pg_part%';name | setting
-------------------------+----------pg_partman_bgw.analyze | offpg_partman_bgw.dbname | pg_partman_bgw.interval | 3600pg_partman_bgw.jobmon | onpg_partman_bgw.role | postgres
(5 rows)
具体使用仔细阅读 <<Example Guide On Setting Up Trigger-based Partitioning>>
发现是通过触发器来实现的,这是在 pgsql 10 之前的分区实现方式,效率较低。总之感觉没有 pg_pathman 好用。
If you’re using the Background Worker (BGW), set the pg_partman_bgw.interval value in postgresql.conf. This example sets it to run every 12 hrs (43200 seconds). See the doc/pg_partman.md file for more information on the BGW settings.
参考:
https://github.com/pgpartman/pg_partman
https://github.com/pgpartman/pg_partman/blob/master/doc/pg_partman.md
https://github.com/pgpartman/pg_partman/blob/master/doc/pg_partman_howto.md
pg_partman相关推荐
- 金仓数据库 KingbaseES 插件参考手册 pg_partman
66. pg_partman 66.1. 插件pg_partman简介 66.1.1. 功能和发展 partman是pg的一个扩展,可帮助使用者更轻松地管理基于time或serialid的分区表.pa ...
- PostgreSQL中的大容量空间探索时间序列数据存储
欧洲航天局科学数据中心(the European Space Agency Science Data Center,简称ESDC)利用TimescaleDB扩展切换到用PostgreSQL来存储他们的 ...
- PostgreSQL从继承到分区(三)
2019独角兽企业重金招聘Python工程师标准>>> 三.Pg_partman 3.1 介绍 pg_partman是基于PostgreSQL分区开发的一个分区表管理工具,通过多个引 ...
- Postgresql-11 根据多字段创建分区表
1.表分区的意义 随着系统的使用,业务表的数据会变得越来越庞大,当达到一定程度时,会严重影响系统性能,将表分区,可以很好的解决这个问题.分区表的优点包括: (1)大大提高查询性能:对表分区后,查询时会 ...
- 基础设施即代码(IAC),Zalando Postgres Operator 简介
Postgres Operator 在由 Patroni 提供支持的 Kubernetes (K8s) 上提供易于运行的高可用性 PostgreSQL 集群.它仅通过 Postgres 清单 (CRD ...
- postgresql 表分区
postgresql 表分区 背景 一个大表查询性能往往不高, 其原因在于数据加载 data load,扫描数据 table scans ,内存交换 memory swap 等等操作的时间成本会随着数 ...
- PostgreSQL 常用工具
文章目录 管理/开发工具 备份与恢复 集群和复制 驱动和接口 PostgreSQL 衍生版 PostgreSQL 扩展插件 外部数据库 存储过程相关 管理/开发工具 pgAdmin4,基于 Web 的 ...
- PostgreSQL是世界上最好的数据库
作者:柯克·罗伊巴尔 Kirk Roybal是PostgreSQL的狂热者,并定期为2ndQuadrant博客做贡献. 前言 首先声明,我不是标题党,刻意诱惑点击或夸大描述.我打算证明,无论有没有金钱 ...
- postgresql分库分表中间件开源实现方案
PostgreSQL 分库分表的中间件开源实现方案有很多, 你可以根据自己的需要选择适合自己的方案. 下面是几种常见的方案: pgpool-II: 一个 PostgreSQL 透明数据库代理, 具有负 ...
最新文章
- 【Linux】一步一步学Linux——builtin命令(215)
- bzoj3895: 取石子(博弈论,记忆化搜索)
- jclouds_jclouds的命令行界面
- Unity 通过Unity Admob Plugin插件集成admob教程
- Hadoop--初识Hadoop
- JAVA高并发的三种实现
- python散点图数据怎么输入_python 散点图添加标签
- Android仿饿了么加减控件,小程序仿饿了么弹窗式购物车
- 【云原生】Kubernetes编排工具精讲
- python 将图片转换成像素画_python画像素图
- xp系统禁用wmi服务器,windows xp系统启用WMI服务的方法
- python爬虫爬取雪球网_Python爬虫:Selenium+ BeautifulSoup 爬取JS渲染的动态内容(雪球网新闻)...
- (一)C++游戏开发-本地存储-介绍
- 云计算产品经理入门(一)
- 教大家看懂安卓build.prop文件详情
- 业务应用数据库压力过大解决方案
- GDP,CPI,PPI,PMI,GNP 是什么
- 神经网络激活函数及其Katex公式代码模板合集
- 大学生用什么软件学c语言,当代大学生必须的几款APP
- Python字符串连接
热门文章
- 注意力机制Effective Approaches to Attention-based Neural Machine Translation
- CWnd::WindowProc的理解
- steamvr2.0 vr模式下,多相机共存
- 【华人学者风采】刘小平 中山大学
- 有哪些靠谱的淘宝代运营公司?
- pubmedy安装不聊了_Pubmedy:显示影响因子+引用数、Sci-hub全文下载的浏览器扩展...
- LED亮5秒灭5秒C语言程序代码,单片机【木仓示申吧】_百度贴吧
- php 读doc_PHP读取DOC 文件
- 世界上最成功的 10 位 Logo 设计师
- 微众银行马智涛:解放数据生产力,以金融科技助力数字经济发展|数字思考者50人...