pg_Partman
pg_partman是PostgreSQL的一個擴展插件,用於創建和管理基於時間或者基於序列的表分區。也支持多級子分區。子表和觸發器都由擴展插件自身管理。已經有數據的表也能很容易的添加細粒度的分區。可選的保留策略能夠自動刪除不再需要的分區。后台工作進程(BGW)能夠自動運行分區維護定時執行任務,而不需要依賴於linux cron等程序從外部進行維護。
安裝配置
依賴
- PostgreSQL >= 9.6
安裝插件
#wget https://github.com/pgpartman/pg_partman/archive/refs/tags/v4.5.1.tar.gz
wget https://github.com/pgpartman/pg_partman/archive/v4.2.2.tar.gz
tar -xf v4.2.2.tar.gz
cd pg_partman-4.2.2
make && make install
# If you do not want the background worker compiled and just want the plain PL/PGSQL functions, you can run this instead:
make NO_BGW=1 install
數據庫服務中配置
配置postgresql.conf文件
shared_preload_libraries = 'pg_partman_bgw' # (change requires restart)
安裝插件
select * from pg_available_extensions where name like 'pg_part%';
CREATE SCHEMA partman;
CREATE EXTENSION pg_partman SCHEMA partman;
CREATE ROLE partman WITH LOGIN;
GRANT ALL ON SCHEMA partman TO partman;
GRANT ALL ON ALL TABLES IN SCHEMA partman TO partman;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA partman TO partman;
GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA partman TO partman; -- PG11+ only
GRANT ALL ON SCHEMA my_partition_schema TO partman;
GRANT CREATE ON DATABASE mydb TO partman;
pg_Pathman
pg_pathman是PostgreSQL Pro公司開源的擴展插件,可以為大型分布式數據庫提供優化的分區解決方案。使用pg_pathman可以給大型數據庫不停機分區,加速分區表查詢,動態管理和增加分區,為分區增加外部表,操作聯合分區等。
安裝
適用環境
- PostgreSQL 9.5, 9.6, 10, 11, 12, 13;
- Postgres Pro Standard 9.5, 9.6, 10, 11, 12;
- Postgres Pro Enterprise;
軟件安裝
wget https://github.com/postgrespro/pg_pathman/archive/refs/tags/1.5.12.tar.gz
# git clone https://github.com/postgrespro/pg_pathman
cd pg_pathman
make USE_PGXS=1
make USE_PGXS=1 install
# wget https://github.com/postgrespro/pg_pathman/archive/1.5.3.tar.gz
# tar -zxvf v1.5.3.tar.gz
參數配置
vi $PGDATA/postgresql.conf
shared_preload_libraries = 'pg_pathman,pg_stat_statements'
數據庫中配置
create extension pg_pathman;
插件升級
- 正常安裝新版本的pg_pathman插件
- 重啟pg服務
- 執行sql版本更新命令
ALTER EXTENSION pg_pathman UPDATE;
SET pg_pathman.enable = t;
select pathman_version();