對於資料庫中的事實表以及一些比較大的表,建議您使用表分區。使用表資料分割函數,方便您定期進行資料刪除(通過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' ));