天天看點

Postgresql 安裝pg_pathman 高效分區表實作

介紹

  • 目前PostgreSQL社群版本的分區表功能比較弱,需要通過繼承和觸發器或RULE來實作分區表的功能,由于查詢和更新涉及限制的檢查、插入則涉及觸發器或規則重寫,導緻分區功能性能較差。
  • 商業版本EDB,以及資料倉庫Greenplum都有比較好的分區支援。
  • 去年GP開源後,阿裡雲RDS PostgreSQL的小夥伴将Greenplum的分區表功能port到PostgreSQL 9.4之後,比使用繼承和觸發器的方式性能提升了近百倍(參考我之前寫的文章,傳統方法除了粗發去本身的開銷,還有SEARCH的開銷,分區越多越慢,沒有使用binary search),由于需要改動CATALOG,是以一直沒有在9.4的版本上線這個功能。
  • 分區表已經成為PostgreSQL使用者萬衆期待的功能之一啦。
  • 社群核心成員之一oleg所在的公司postgrespro,開發了一款分區表功能的插件,不需要動用catalog,可以很友善的增加分區表的功能。

安裝與配置

yum install git
yum install postgresql96-devel.x86_64  openssl-devel.x86_64
yum install gcc
git clone https://github.com/postgrespro/pg_pathman
export PATH=/usr/pgsql-9.6/bin:$PATH
vi /var/lib/pgsql/9.6/data/postgresql.conf
shared_preload_libraries = 'pg_pathman'

service postgresql-9.6 restart      

測試

# su - postgres
# psql
\dx
\c exampledb
create extension pg_pathman;
\dx