本文介紹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