PG分区表实战
学习PostgreSQL分区表的创建、管理与查询优化 · 难度:入门 · +15XP
分区表的概念
PostgreSQL分区表是将一个大表拆分为多个物理子表的技术,但逻辑上仍作为一个表访问。分区可以显著提升查询性能、管理效率和数据维护速度。
支持的分区类型
| 类型 | 说明 |
|---|---|
| 范围分区 | 按列值范围划分,如按日期 |
| 列表分区 | 按列值列表划分,如按地区 |
| 哈希分区 | 按哈希值划分,均匀分布数据 |
创建范围分区表示例
CREATE TABLE orders (
id SERIAL,
order_date DATE NOT NULL,
amount NUMERIC
) PARTITION BY RANGE (order_date);
CREATE TABLE orders_2024_q1 PARTITION OF orders
FOR VALUES FROM ('2024-01-01') TO ('2024-04-01');
CREATE TABLE orders_2024_q2 PARTITION OF orders
FOR VALUES FROM ('2024-04-01') TO ('2024-07-01');
插入与查询
INSERT INTO orders (order_date, amount) VALUES ('2024-02-15', 100.00);
INSERT INTO orders (order_date, amount) VALUES ('2024-05-20', 250.00);
-- 自动路由到对应分区
SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-03-31';
分区维护
使用ATTACH PARTITION添加新分区,DETACH PARTITION分离分区。定期删除旧分区可避免数据膨胀。
练习提示
尝试创建一个按年份分区的销售表,并插入跨年数据观察分区路由效果。