本文介绍PolarDB-X 2.0的DDL异步执行语法扩展。
背景
之前PolarDB-X 2.0的DDL异步执行只能通过HINT
控制,例如:/*+TDDL:cmd_extra(PURE_ASYNC_DDL_MODE = true)*/
,这种方式存在两个明显的问题:
HINT
的格式和内容比较复杂,不易理解和使用。使用命令行方式时,需要
-c
参数HINT
才会生效,容易在编写命令时遗漏。
为了解决以上问题,PolarDB-X 2.0扩展了部分DDL的语法,新增ASYNC=TRUE
选项来支持异步执行。
说明
DDL中同时使用ASYNC
和HINT
的情况下,以ASYNC
的为准。
支持版本
PolarDB-X 2.0的计算节点的版本为5.4.18-17142802及以上。
支持的DDL类型
重要
AUTO模式和DRDS模式的数据库都支持ASYNC=TRUE
。
DDL管理语句
CONTINUE DDL <JOB_ID> ASYNC=TRUE;
CANCEL DDL <JOB_ID> ASYNC=TRUE;
ROLLBACK DDL <JOB_ID> ASYNC=TRUE;
PAUSE DDL <JOB_ID> ASYNC=TRUE;
PAUSE REBALANCE <JOB_ID> ASYNC=TRUE;
CONTINUE REBALANCE <JOB_ID> ASYNC=TRUE;
CANCEL REBALANCE <JOB_ID> ASYNC=TRUE;
说明
其中JOB_ID可通过
SHOW DDL
语句获取。更多信息,请参见DDL管理语句。
OPTIMIZE TABLE
OPTIMIZE TABLE <table_name> ASYNC=TRUE;
ANALYZE TABLE
ANALYZE TABLE <table_name> ASYNC=TRUE;
ALTER TABLE
所有ALTER TABLE
语句均支持异步执行,以下是一些示例:
异步创建索引
ALTER TABLE <table_name> ADD INDEX <index_name>(<column_name>) ASYNC=TRUE;
说明更多信息,请参见索引。
异步创建全局二级索引
ALTER TABLE <table_name> ADD GLOBAL INDEX <gsi_name>(<column_name>) PARTITION BY KEY(<column_name>) PARTITIONS <part_num> ASYNC=TRUE;
说明更多信息,请参见全局二级索引(GSI)。
异步修改和删除列
ALTER TABLE <table_name> MODIFY COLUMN <column_name> BIGINT ASYNC=TRUE; ALTER TABLE <table_name> DROP COLUMN <column_name> ASYNC=TRUE;
异步分裂和迁移分区
ALTER TABLE <table_name> SPLIT PARTITION <partition_name1> INTO (PARTITION <partition_name2> VALUES LESS THAN (<column_value>), PARTITION <partition_name3> VALUES LESS THAN(<column_value)) ASYNC=TRUE; ALTER TABLE <table_name> MOVE PARTITIONS <partition_name[,..,partition_name]> TO <DN_ID> ASYNC=TRUE; ALTER TABLEGROUP <tablegroup_name> MOVE PARTITIONS <partition_name> TO <DN_ID> ASYNC=TRUE; -- 表组级用法
异步变更表组
ALTER TABLE <table_name> SET tablegroup=<tablegroup_name> ASYNC=TRUE;
说明更多信息,请参见表组。
CREATE INDEX
CREATE GLOBAL INDEX <index_name> ON <table_name> (<column_name>) PARTITION BY HASH(<column_name>) PARTITIONS <part_num> ASYNC=TRUE ;
CREATE INDEX <index_name> ON <table_name>(<column_name>) ASYNC=TRUE;
说明
不支持的DDL类型
CREATE TABLE
DROP TABLE
CREATE VIEW
DROP VIEW
CREATE PROCEDURE
DROP PROCEDURE
CREATE DATABASE
DROP DATABASE
CREATE TABLEGROUP
DROP TABLEGROUP
CREATE SEQUENCE
DROP SEQUENCE
ALTER SEQUENCE
该文章对您有帮助吗?