alter_table_stmt:ALTER TABLE table_name USING PARTITION POLICY partition_policy_name| ALTER TABLE table_name DROP PARTITION POLICY_ [FORCE]| ALTER TABLE table_name STORAGE_TIER [=] {AUTO_STORAGE | LOCAL_STORAGE | OBJECT_STORAGE}| ALTER TABLE table_name MODIFY PARTITION (partition_name [, partition_name ...]) STORAGE_TIER [=] {AUTO_STORAGE | LOCAL_STORAGE | OBJECT_STORAGE}| ALTER TABLE table_name DROP PARTITION partition_name [, partition_name ...] [UPDATE GLOBAL INDEXES]| ALTER TABLE table_name TRUNCATE PARTITION {ALL | partition_name [, partition_name ...]} [UPDATE GLOBAL INDEXES]
参数 | 是否必选 | 说明 |
ALTER TABLE table_name USING PARTITION POLICY partition_policy_name | 可选 | 修改表绑定的分区亲和性策略,其中 table_name跟partition_policy_name需要显式指定。 |
ALTER TABLE table_name DROP PARTITION POLICY_ [FORCE] | 可选 | 解绑表绑定的分区亲和性策略。 table_name 需显式指定。FORCE 选项:若指定,则执行成功后,当前表不再绑定任何亲和性策略。 若不指定,则会尝试解绑当前表已绑定的显式亲和性策略,再将其绑定可能的隐式亲和性策略。 |
ALTER TABLE table_name STORAGE_TIER [=] | 可选 | 修改表级的存储层级,用于声明数据对象在冷热分层存储中的存放位置。取值如下: AUTO_STORAGE:自动模式,由系统根据冷热分层策略及实例的默认存储层自动决定数据对象的存储位置。 LOCAL_STORAGE:本地存储,数据对象存放在本地磁盘,适用于热数据,访问延迟低。OBJECT_STORAGE:对象存储,数据对象存放在对象存储中,适用于冷数据归档,存储成本低。修改后仅影响后续新生成的数据对象的存储位置,已存在数据对象的迁移由系统按照冷热分层策略异步执行。 |
ALTER TABLE table_name MODIFY PARTITION (partition_name [, partition_name ...]) STORAGE_TIER [=] | 可选 | 修改指定分区的存储层级,支持一次指定一个或多个分区,分区级声明优先于表级。典型场景:将历史分区归档至对象存储以降低存储成本,或将热点分区迁回本地存储以降低访问延迟。 说明事项: partition_name 需为已存在的分区名,仅支持显式分区表。修改后仅影响后续新生成的数据对象的存储位置,已存在数据对象的迁移由系统按照冷热分层策略异步执行。 |
ALTER TABLE table_name DROP PARTITION ... [UPDATE GLOBAL INDEXES] ALTER TABLE table_name TRUNCATE PARTITION ... [UPDATE GLOBAL INDEXES] | 可选 | 在执行 DROP PARTITION 或 TRUNCATE PARTITION 的同时,同步重建表上的全局二级索引(GSI),使全局二级索引在 DDL 完成后保持可用状态。不指定 UPDATE GLOBAL INDEXES 子句:分区操作完成后,受影响表的所有全局二级索引会被标记为不可用,后续查询无法使用相关索引(包括 FORCE INDEX 提示),需要单独重建索引或重新创建索引才能恢复使用。指定 UPDATE GLOBAL INDEXES 子句:DDL 执行过程中会同步重建全局二级索引,完成后全局二级索引保持可用状态,且数据与表中实际行保持一致。该子句仅作用于全局二级索引,不影响本地索引。如果表上不存在全局二级索引,该子句不会产生额外作用。 |
# 创建分区亲和性策略pp1tdsql [demo]> create partition policy pp1 partition by hash(int) partitions 4;Query OK, 0 rows affected (0.02 sec)# 创建hash 4分区的表ttdsql [demo]> create table t(id INT) partition by hash(id) partitions 4;Query OK, 0 rows affected (0.90 sec)# 将表t绑定到分区亲和性策略pp1tdsql [demo]> alter table t using partition policy pp1;Query OK, 0 rows affected (0.64 sec)# 解绑表t的分区亲和性,完成后表t会被自动绑定到对应的隐式亲和性策略tdsql [demo]> alter table t drop partition policy;Query OK, 0 rows affected (0.66 sec)# 彻底解绑表t的分区亲和性策略,完成后表t不绑定任何分区亲和性策略tdsql [demo]> alter table t drop partition policy force;Query OK, 0 rows affected (0.61 sec)
tdsql [demo]> ALTER TABLE t1 STORAGE_TIER = LOCAL_STORAGE;Query OK, 0 rows affected
# 将分区p1归档至对象存储tdsql [demo]> ALTER TABLE t1 MODIFY PARTITION (p1) STORAGE_TIER = OBJECT_STORAGE;Query OK, 0 rows affected# 一次将多个历史分区归档至对象存储tdsql [demo]> ALTER TABLE t1 MODIFY PARTITION (p0, p1) STORAGE_TIER = OBJECT_STORAGE;Query OK, 0 rows affected
# 创建带全局二级索引的分区表tdsql [demo]> CREATE TABLE orders (id INT NOT NULL,user_id INT NOT NULL,created_date DATE NOT NULL,PRIMARY KEY (id, created_date),INDEX gsi_user (user_id) GLOBAL) PARTITION BY RANGE (TO_DAYS(created_date)) (PARTITION p202401 VALUES LESS THAN (TO_DAYS('2024-02-01')),PARTITION p202402 VALUES LESS THAN (TO_DAYS('2024-03-01')),PARTITION p202403 VALUES LESS THAN (TO_DAYS('2024-04-01')));Query OK, 0 rows affected# 删除指定分区,并同步重建全局二级索引;DDL 完成后 gsi_user 仍可用tdsql [demo]> ALTER TABLE orders DROP PARTITION p202401 UPDATE GLOBAL INDEXES;Query OK, 0 rows affected# 清空指定分区,并同步重建全局二级索引tdsql [demo]> ALTER TABLE orders TRUNCATE PARTITION p202402 UPDATE GLOBAL INDEXES;Query OK, 0 rows affected# 不指定 UPDATE GLOBAL INDEXES 时,gsi_user 会被标记为不可用tdsql [demo]> ALTER TABLE orders DROP PARTITION p202403;Query OK, 0 rows affected, 1 warning
Was this page helpful?
You can also Contact sales or Submit a Ticket for help.
Help us improve! Rate your documentation experience in 5 mins.
Feedback