PG分区表实战
掌握PostgreSQL分区表的概念、类型与使用场景,学会创建和管理分区表。 · 难度:入门 · +15XP
分区表概述
分区表是将一个大表拆分成多个物理小表(分区)的技术,每个分区存储部分数据,但对外呈现为一张逻辑表。分区能够显著提升查询性能和管理效率。
分区类型
- 范围分区:按列值的范围划分,如按日期、ID范围。
- 列表分区:按列值的离散值列表划分,如按地区、状态。
- 哈希分区:对列值进行哈希运算后均匀分布。
创建范围分区表示例
-- 创建父表
CREATE TABLE sales (
id SERIAL,
sale_date DATE NOT NULL,
amount NUMERIC
) PARTITION BY RANGE (sale_date);
-- 创建分区
CREATE TABLE sales_2023_q1 PARTITION OF sales
FOR VALUES FROM ('2023-01-01') TO ('2023-04-01');
CREATE TABLE sales_2023_q2 PARTITION OF sales
FOR VALUES FROM ('2023-04-01') TO ('2023-07-01');
-- 插入数据会自动路由到对应分区
INSERT INTO sales (sale_date, amount) VALUES ('2023-02-15', 100);
分区表管理操作
| 操作 | 命令 |
|---|---|
| 添加分区 | CREATE TABLE ... PARTITION OF ... |
| 删除分区 | DROP TABLE 分区名 |
| 分离分区(保留数据) | ALTER TABLE 父表 DETACH PARTITION 分区名 |
练习提示
创建一个按年份范围分区的订单表,插入2023年和2024年的数据,然后查询某年的订单总数,观察执行计划是否只扫描了相关分区。