PostgreSQL分区表(Table Partitioning)
发布时间:2020-12-13 17:15:05 所属栏目:百科 来源:网络整理
导读:1、创建主表 CREATE TABLE t21pgPart(imp_date BIGINT,c1 BIGINT,c2 BIGINT); 2、创建分区表 CREATE TABLE t21pgPart_p_20150901(CHECK (imp_date = 20150901 )) INHERITS (t21pgPart);CREATE TABLE t21pgPart_p_201508280901(CHECK (imp_date 20150901 AND
1、创建主表CREATE TABLE t21pgPart(imp_date BIGINT,c1 BIGINT,c2 BIGINT);2、创建分区表 CREATE TABLE t21pgPart_p_20150901(CHECK (imp_date >= 20150901 )) INHERITS (t21pgPart); CREATE TABLE t21pgPart_p_201508280901(CHECK (imp_date < 20150901 AND imp_date > 20150828)) INHERITS (t21pgPart); CREATE TABLE t21pgPart_p_20150828(CHECK (imp_date <= 20150828)) INHERITS (t21pgPart);3、定义分区RULE CREATE OR REPLACE RULE insert_t21pgPart_p_20150901 AS ON INSERT TO t21pgPart WHERE imp_date >= 20150901 DO INSTEAD INSERT INTO t21pgPart_p_20150901 VALUES(NEW.*); CREATE OR REPLACE RULE insert_t21pgPart_p_201508280901 AS ON INSERT TO t21pgPart WHERE imp_date < 20150901 AND imp_date > 20150828 DO INSTEAD INSERT INTO t21pgPart_p_201508280901 VALUES(NEW.*); CREATE OR REPLACE RULE insert_t21pgPart_p_20150828 AS ON INSERT TO t21pgPart WHERE imp_date <= 20150828 DO INSTEAD INSERT INTO t21pgPart_p_20150828 VALUES(NEW.*);4、插入测试数据 INSERT INTO t21pgPart(imp_date,c1,c2) VALUES(20150901,11,12); INSERT INTO t21pgPart(imp_date,c2) VALUES(20150909,21,22); INSERT INTO t21pgPart(imp_date,c2) VALUES(20150831,31,32); INSERT INTO t21pgPart(imp_date,c2) VALUES(20150829,41,42); INSERT INTO t21pgPart(imp_date,c2) VALUES(20150828,51,52); INSERT INTO t21pgPart(imp_date,c2) VALUES(20150809,61,62);5、查看数据分布情况,是否分布到了正确的分区表 SELECT p.relname,t.tableoid,t.* FROM t21pgPart t,pg_class p WHERE t.tableoid = p.oid; 6、其他 6.1、删除主表(级联删除分区表)drop table t21pgPart CASCADE;6.2、Rule是一个分流的办法,还有TRIGGER也能做到让正确的数据流向正确的分区子表。 6.3、删除表,注意使用CASCADE
david=# drop table t21pgPart_p_20150831; ERROR: cannot drop table t21pgpart_p_20150831 because other objects depend on it DETAIL: rule insert_t21pgpart_p_20150831 on table t21pgpart depends on table t21pgpart_p_20150831 HINT: Use DROP ... CASCADE to drop the dependent objects too. david=# drop table t21pgPart_p_20150831 CASCADE; NOTICE: drop cascades to rule insert_t21pgpart_p_20150831 on table t21pgpart DROP TABLE 7、参考url: http://blog.chinaunix.net/uid-24774106-id-3887099.html http://www.cnblogs.com/mchina/archive/2013/04/09/2973427.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |