ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] > [github](https://github.com/pgpartman/pg_partman) ## 概述 `pg_partman` 是一个用于 PostgreSQL 数据库的扩展,提供了强大的分区管理功能。它简化了 PostgreSQL 的表分区管理,自动化了分区的创建、维护和清理过程,适用于需要大量数据存储并希望通过分区来优化性能的场景。 ## 安装 clone ``` sudo apt-get install postgresql-server-dev-XX # 根据版本安装开发包 git clone https://github.com/pgpartman/pg_partman.git cd pg_partman make && sudo make install ``` 添加扩展 ``` CREATE EXTENSION pg_partman; ``` ## 示例 ### 使用 pg_partman 创建分区 创建时间分区表 ``` SELECT partman.create_parent( p_parent_table := 'logs', -- 需要分区的父表 p_control := 'created_at', -- 用于分区的字段 p_type := 'time', -- 分区类型,'time' 表示时间分区 p_interval := 'monthly', -- 分区时间间隔,这里设置为按月分区 p_persistence := 'permanent' -- 持久化分区 ); ``` 查看分区 ``` SELECT * FROM pg_partman.partitions WHERE parent_table = 'logs'; ``` > 如果你设置了分区策略,pg_partman 会根据设定的时间间隔或范围,自动创建新的分区。例如,你设置了按月分区,那么 pg_partman 会在每个月自动创建一个新的分区。 ### 创建序列号分区表 ``` SELECT partman.create_parent( p_parent_table := 'users', -- 需要分区的父表 p_control := 'user_id', -- 用于分区的字段 p_type := 'range', -- 分区类型,'range' 表示范围分区 p_interval := 10000, -- 每个分区的范围间隔 p_persistence := 'permanent' -- 持久化分区 ); ``` ### 重建分区表 ``` SELECT partman.rebuild_parent('logs'); ``` ### 清理过期分区 你可以设置 pg_partman 定期清理不再需要的分区。使用以下命令来清理过期分区,这会检查 logs 表,删除那些超出保留期限的分区(取决于你的分区策略)。 ``` SELECT partman.run_maintenance('logs'); ``` ### 查看分区的详细信息 ``` SELECT * FROM pg_partman.partitions WHERE parent_table = 'logs'; ``` ### 删除分区 ``` SELECT partman.drop_partition('logs', '2021-01-01'::date); ```