对于数据库中的事实表以及一些比较大的表,建议您使用表分区。使用表分区功能,方便您定期进行数据删除(通过 alter table drop patition 命令可删除整个分区的数据)和导入(使用交换分区的方式,即 alter table exchange patition 命令可以加入新数据分区)。

HybridDB for PostgreSQL 支持 Range Partition(范围分区)、List Partition(列表分区)和 Composite Partition(多级分区)。但是,Range Partition 只支持利用数值或时间类型的字段来分区。

以下是一个使用 Range Partition 的表的例子。


CREATE TABLE LINEITEM (
L_ORDERKEY BIGINT NOT NULL, 
L_PARTKEY BIGINT NOT NULL, 
L_SUPPKEY BIGINT NOT NULL, 
L_LINENUMBER INTEGER,
L_QUANTITY FLOAT8,
L_EXTENDEDPRICE FLOAT8,
L_DISCOUNT FLOAT8,
L_TAX FLOAT8,
L_RETURNFLAG CHAR(1),
L_LINESTATUS CHAR(1),
L_SHIPDATE DATE,
L_COMMITDATE DATE,
L_RECEIPTDATE DATE,
L_SHIPINSTRUCT CHAR(25),
L_SHIPMODE CHAR(10),
L_COMMENT VARCHAR(44)
) WITH (APPENDONLY=true, ORIENTATION=column, COMPRESSTYPE=zlib, COMPRESSLEVEL=5, BLOCKSIZE=1048576, OIDS=false) DISTRIBUTED BY (l_orderkey)
PARTITION BY RANGE (L_SHIPDATE) (START (date '1992-01-01') INCLUSIVE END (date '2000-01-01') EXCLUSIVE EVERY (INTERVAL '1 month' ));