PostgreSQL 分區


https://zhuanlan.zhihu.com/p/112054799

 

-- 創建父表

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;
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM