PostgreSQL 分区
https://zhuanlan.zhihu.com/p/112054799
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | -- 创建父表 CREATE TABLE orders_history_subs ( id serial, user_id int4, create_time timestamp (0)) PARTITION BY RANGE(create_time); -- 创建分区表 CREATE TABLE orders_202002 PARTITION OF orders_history_subs FOR VALUES FROM ( '2020-02-01' ) TO ( '2020-03-01' ); CREATE TABLE orders_history_before_202002 PARTITION OF orders_history_subs FOR VALUES FROM ( '2000-01-01' ) TO ( '2020-02-01' ); CREATE TABLE orders_history_before_202003 PARTITION OF orders_history_subs FOR VALUES FROM ( '2020-04-01' ) TO ( '2020-05-01' ); -- 创建索引 CREATE INDEX order_idx_history_202002_create_time ON orders_202002 USING btree(create_time); CREATE INDEX order_idx_history_before_202002_create_time ON orders_history_before_202002 USING btree(create_time); -- 绑定“二级"分区到父表上 ALTER TABLE orders ATTACH PARTITION orders_history_subs FOR VALUES FROM ( '2000-01-01' ) TO ( '2020-03-01' ); SELECT * from orders_history_subs INSERT INTO orders_history_subs (user_id,create_time) VALUES (4, '2020-04-11 17:23:12' ); UPDATE orders_history_subs SET user_id = 3 WHERE id = 3; DELETE FROM orders_history_subs WHERE id = 8; |
(2),解绑要进行拆分的分区
ALTER TABLE orders DETACH PARTITION orders_history;
(4),绑定“二级"分区到父表上
ALTER TABLE orders ATTACH PARTITION orders_history_subs FOR VALUES FROM ('2000-01-01') TO
('2020-03-01');
(5),迁移旧数据
将原 orders_history 表中数据迁移过来
INSERT INTO orders_history_subs select * from orders_history;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通