使用和管理分区表
分区表支持大部分非分区表的相关功能,具体可以参考《开发指南》中常规表的各类操作语法相关资料。
除此之外,分区表还支持大量的分区级操作命令,包括分区级DQL/DML(如SELECT、INSERT、UPDATE、DELETE、UPSERT、MERGE INTO)、分区级DDL(如ADD、DROP、TRUNCATE、EXCHANGE、SPLIT、MERGE、MOVE、RENAME)、分区VACUUM/ANALYZE、分类分区索引等。相关命令使用方法请参见分区表DQL/DML、分区索引、分区表运维管理、以及《开发指南》中各个语法命令对应的章节。
分区级操作命令一般通过指定分区名或者分区值的方式进行,比如语法命令可能是如下情形:
sql_action [ t_name ] { PARTITION | SUBPARTITION } { p_name | (p_name) }; sql_action [ t_name ] { PARTITION | SUBPARTITION } FOR (p_value);
通过指定分区名p_name或指定分区值p_value来定向操作某个特定分区,此时业务只会作用于对象分区,而不会影响其他任何分区。如果通过指定分区名p_name来执行业务,数据库会匹配p_name对应的分区,该分区不存在则业务提示异常;如果通过指定分区值p_value来执行业务,数据库会匹配p_value值所属分区。
gaussdb=# CREATE TABLE list_01 ( id INT, role VARCHAR(100), data VARCHAR(100) ) PARTITION BY LIST (id) ( PARTITION p_list_1 VALUES(0,1,2,3,4), PARTITION p_list_2 VALUES(5,6,7,8,9), PARTITION p_list_3 VALUES(DEFAULT) ); gaussdb=# DROP TABLE list_01;
指定分区业务中,PARTITION p_list_1与PARTITION FOR (4)等价,为同一个分区;PARTITION p_list_3与PARTITION FOR (12)等价,为同一个分区。