本文介紹AnalyticDB PostgreSQL版如何使用表分區。

對于數據庫中的事實表以及一些比較大的表,建議您使用表分區。使用表分區功能,方便您定期進行數據刪除(通過alter table drop partition命令可刪除整個分區的數據)和導入(使用交換分區的方式,即alter table exchange partition命令可以加入新數據分區)。

AnalyticDB 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' ));