云数据库 GAUSSDB-ALTER TABLE PARTITION:语法格式
时间:2024-11-02 18:53:02
语法格式
- 修改表分区主语法。
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} action [, ... ];
其中action统指如下分区维护子语法。当存在多个分区维护子句时,保证了分区的连续性,无论这些子句的排序如何, GaussDB 总会先执行DROP PARTITION再执行ADD PARTITION操作,最后顺序执行其它分区维护操作。move_clause | exchange_clause | row_clause | merge_clause | modify_clause | split_clause | add_clause | drop_clause | truncate_clause
- move_clause子语法用于移动分区到新的表空间。
MOVE PARTITION { partion_name | FOR ( partition_value [, ...] ) } TABLESPACE tablespacename
- exchange_clause子语法用于把普通表的数据迁移到指定的分区。
EXCHANGE PARTITION { ( partition_name ) | FOR ( partition_value [, ...] ) } WITH TABLE {[ ONLY ] ordinary_table_name | ordinary_table_name * | ONLY ( ordinary_table_name )} [ { WITH | WITHOUT } VALIDATION ] [ VERBOSE ] [ UPDATE GLOBAL INDEX ]
进行交换的普通表和分区必须满足如下条件:
- 普通表和分区的列数目相同,对应列的信息严格一致,包括:列名、列的数据类型、列约束、列的Collation信息、列的存储参数、列的压缩信息等。
- 普通表和分区的表压缩信息严格一致。
- 普通表和分区的索引个数相同,且对应索引的信息严格一致。
- 普通表和分区的表约束个数相同,且对应表约束的信息严格一致。
- 普通表不可以是临时表,分区表只能是范围分区表,列表分区表,哈希分区表或间隔分区表。
- 普通表和分区表上不可以有动态数据脱敏,行访问控制约束。
- 列表分区表,哈希分区表不能是列存储。
- 完成交换后,普通表和分区的数据被置换,同时普通表和分区的表空间信息被置换。此时,普通表和分区的统计信息变得不可靠,需要对普通表和分区重新执行analyze。
- 由于非分区键不能建立本地唯一索引,只能建立全局唯一索引,所以如果普通表含有唯一索引时,可能会导致不能交换数据。
- row_clause子语法用于设置分区表的行迁移开关。
{ ENABLE | DISABLE } ROW MOVEMENT
- merge_clause子语法用于把多个分区合并成一个分区。当前只有RANGE分区支持合并分区。
MERGE PARTITIONS { partition_name } [, ...] INTO PARTITION partition_name [ TABLESPACE tablespacename ] [ UPDATE GLOBAL INDEX ]
USTORE存储引擎表不支持在事务块中执行ALTER TABLE MERGE PARTITIONS的操作。
- modify_clause子语法用于设置分区索引是否可用。
MODIFY PARTITION partition_name { UNUSABLE LOCAL INDEXES | REBUILD UNUSABLE LOCAL INDEXES }
- split_clause子语法用于把一个分区切割成多个分区。当前只有RANGE分区支持切割分区。
SPLIT PARTITION { partition_name | FOR ( partition_value [, ...] ) } { split_point_clause | no_split_point_clause } [ UPDATE GLOBAL INDEX ]
- 指定切割点split_point_clause的语法为。
AT ( partition_value ) INTO ( PARTITION partition_name [ TABLESPACE tablespacename ] , PARTITION partition_name [ TABLESPACE tablespacename ] )
- 列存分区表不支持切割分区。
- 切割点的大小要位于正在被切割的分区的分区键范围内,指定切割点的方式只能把一个分区切割成两个新分区。
- 不指定切割点no_split_point_clause的语法为。
INTO { ( partition_less_than_item [, ...] ) | ( partition_start_end_item [, ...] ) }
- 不指定切割点的方式,partition_less_than_item指定的第一个新分区的分区键要大于正在被切割的分区的前一个分区(如果存在的话)的分区键,partition_less_than_item指定的最后一个分区的分区键要等于正在被切割的分区的分区键大小。
- 不指定切割点的方式,partition_start_end_item指定的第一个新分区的起始点(如果存在的话)必须等于正在被切割的分区的前一个分区(如果存在的话)的分区键,partition_start_end_item指定的最后一个分区的终止点(如果存在的话)必须等于正在被切割的分区的分区键。
- partition_less_than_item支持的分区键个数最多为4,而partition_start_end_item仅支持1个分区键,其支持的数据类型参见PARTITION BY RANGE(parti...。
- 在同一语句中partition_less_than_item和partition_start_end_item两者不可同时使用;不同split语句之间没有限制。
- 分区项partition_less_than_item的语法为。
PARTITION partition_name VALUES LESS THAN ( { partition_value | MAXVALUE } [, ...] ) [ TABLESPACE tablespacename ]
- 分区项partition_start_end_item的语法为,其约束参见START END语法描述。
PARTITION partition_name { {START(partition_value) END (partition_value) EVERY (interval_value)} | {START(partition_value) END ({partition_value | MAXVALUE})} | {START(partition_value)} | {END({partition_value | MAXVALUE})} } [TABLESPACE tablespace_name]
- 指定切割点split_point_clause的语法为。
- add_clause子语法用于为指定的分区表添加一个或多个分区。
ADD PARTITION ( partition_col1_name = partition_col1_value [, partition_col2_name = partition_col2_value ] [, ...] ) [ LOCATION 'location1' ] [ PARTITION (partition_colA_name = partition_colA_value [, partition_colB_name = partition_colB_value ] [, ...] ) ] [ LOCATION 'location2' ] ADD {partition_less_than_item | partition_start_end_item| partition_list_item }
分区项partition_list_item的语法如下。PARTITION partition_name VALUES (list_values_clause) [ TABLESPACE tablespacename ]
- partition_list_item仅支持1个分区键,其支持的数据类型参见PARTITION BY LIST(partit...。
- 间隔/哈希分区表不支持添加分区。
- drop_clause子语法用于删除分区表中的指定分区。
DROP PARTITION { partition_name | FOR ( partition_value [, ...] ) } [ UPDATE GLOBAL INDEX ]
- 哈希分区表不支持删除分区。
- 当分区表只有一个分区时,不能删除该分区。
- truncate_clause子语法用于清空分区表中的指定分区。
TRUNCATE PARTITION { partition_name | FOR ( partition_value [, ...] ) } [ UPDATE GLOBAL INDEX ]
- move_clause子语法用于移动分区到新的表空间。
- 修改表分区名称的语法。
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} RENAME PARTITION { partion_name | FOR ( partition_value [, ...] ) } TO partition_new_name;
support.huaweicloud.com/centralized-devg-v2-gaussdb/devg_03_0521.html
看了此文的人还看了
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格
推荐文章
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- 云数据库Gaussdb数据库索引_华为gaussdb__gaussdb 数据库
- GaussDB数据库SQL语法_SQL语法_CREATE_ALTER
- GaussDB版本查询_华为云GaussDB的作用_高斯数据库版本查询_华为云
- BPM流程_BPM的书写格式_BPM产品介绍
- MapReduce服务_什么是ClickHouse_如何使用ClickHouse
- 日志分析_日志结构化_日志格式化
- 什么是Flink OpenSource SQL_数据湖探索_Flink OpenSource SQL
- 连接RDS for MySQL数据库_华为云数据库RDS_语法_数据库连接_连接命令
- GaussDB(for MySQL)并行查询_GaussDB(for MySQL)内核_GaussDB(for MySQL)并行执行_PQ