在创建的同步库中,支持同步表及数据,不支持同步数据库,函数,存储过程,触发器,分区(删除),主键(增加/删除/修改),事务,用户,角色,权限,事件等对象的操作。
不支持同步的分区表相关操作请参见表2。
表2 不支持同步的分区表相关操作
DDL名称 |
SQL样例 |
分析表分区 |
ALTER TABLE {db}.tp ANALYZE PARTITION p0; |
检查表分区 |
ALTER TABLE {db}.tp CHECK PARTITION p0; |
优化表分区 |
ALTER TABLE {db}.tp OPTIMIZE PARTITION p0; |
重建表分区 |
ALTER TABLE {db}.tp REBUILD PARTITION p0; |
修复表分区 |
ALTER TABLE {db}.tp REPAIR PARTITION p0; |
创建数据库 |
CREATE DATABASE ddl_test_2; |
修改行格式 |
ALTER TABLE tbl_name ROW_FORMAT = row_format; |
设置持久表统计信息 |
ALTER TABLE tbl_name STATS_PERSISTENT=0, STATS_SAMPLE_PAGES=20,STATS_AUTO_RECALC=1, ALGORITHM=INPLACE, LOCK=NONE; |
设置表的字符集 |
ALTER TABLE tbl_name CHARACTER SET = charset_name; |
转换表的字符集 |
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name; |
执行空重建 |
ALTER TABLE tbl_name ENGINE=InnoDB; |
增加表分区 |
ALTER TABLE {db}.tp ADD PARTITION (PARTITION p3 VALUES LESS THAN (2006) ); |
设置表默认字符集和校对规则 |
ALTER TABLE tbl_name DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci; |
建表语句不能包含CHECK,表选项等。
在数据同步过程中,表3中的操作会导致HTAP中数据和TaurusDB 中数据不一致,应避免使用。
这些不支持同步的操作不会影响在HTAP实例上查询和分析数据。
表3 导致数据不一致的DDL操作说明
DDL名称 |
SQL样例 |
删除主键 |
ALTER TABLE tbl_name DROP PRIMARY KEY; |
增加主键 |
ALTER TABLE {db}.t1 ADD PRIMARY KEY (id); |
增加删除主键 |
ALTER TABLE tbl_name DROP PRIMARY KEY, ADD PRIMARY KEY (column); |
主键允许为NULL |
ALTER TABLE tbl_name MODIFY COLUMN key_column_name data_type; |
修改主键类型 |
ALTER TABLE tbl_name MODIFY COLUMN key_column_name data_type not null; |
增加列
说明:
支持一般的列增加,但不支持缺省值为如下取值的场景:
包含HTAP中不存在的函数,字符串,标识符
|
ALTER TABLE tbl_name ADD COLUMN column_name column_definition
c VARCHAR(10) DEFAULT (CONCAT('1', '2')); |
设置列的缺省值
说明:
支持缺省值的设置,但不支持缺省值为如下取值的场景:
包含HTAP中不存在的函数,字符串,标识符
|
ALTER TABLE tbl_name ALTER COLUMN col SET DEFAULT literal; |
修改列不允许为NULL |
ALTER TABLE tbl_name MODIFY COLUMN column_name data_type NOT NULL; |
同时修改列名和类型 |
ALTER TABLE t1 CHANGE b b1 VARCHAR(100); |
修改列名 |
ALTER TABLE t1 RENAME COLUMN a TO b; |
增加存储型衍生列 |
ALTER TABLE {db}.t1 ADD COLUMN (st2 INT GENERATED ALWAYS AS (c2 + 2)STORED), ALGORITHM=COPY; |
增加虚拟型衍生列 |
ALTER TABLE t1 ADD COLUMN (c2 INT GENERATED ALWAYS AS (c1 + 1)VIRTUAL); |
删除表分区 |
ALTER TABLE {db}.tp DROP PARTITION p4; |
丢弃表分区 |
ALTER TABLE {db}.tp DISCARD PARTITION p2 TABLESPACE; |
导入表分区 |
ALTER TABLE {db}.tp IMPORT PARTITION p2 TABLESPACE; |
截断表分区 |
ALTER TABLE {db}.tp TRUNCATE PARTITION p2; |
截断分区表 |
TRUNCATE {db}.tp; |
联合表分区 |
ALTER TABLE {db}.tp_hash COALESCE PARTITION 2; |
重新组织表分区 |
ALTER TABLE {db}.tp REORGANIZE PARTITION p0,p1,p2,p3 INTO ( ... ); |
交换表分区 |
ALTER TABLE {db}.tp EXCHANGE PARTITION p0 WITH TABLE {db}.tp2; |
删除表分区 |
ALTER TABLE {db}.tp REMOVE PARTITIONING; |
使用REPLACE子句 |
CREATE OR REPLACE TABLE; |
修改视图名称 |
RENAME TABLE old_view_name TO new_view_name; |
表4 同步过程中已忽略的DDL(评估无影响)
DDL名称 |
SQL样例 |
添加索引 |
ALTER TABLE tbl_name ADD INDEX name; |
重命名索引 |
ALTER TABLE tbl_name RENAME INDEX old_index_name TO new_index_name; |
删除索引 |
DROP INDEX name ON table; |
增加全文索引 |
CREATE FULLTEXT INDEX name ON table(column); |
增加空间索引 |
ALTER TABLE geom ADD SPATIAL INDEX(g); |
修改索引类型 |
ALTER TABLE tbl_name DROP INDEX i1, ADD INDEX i1(key_part,...) USING BTREE; |
添加索引约束 |
ALTER TABLE tbl_name ADD CONSTRAINT UNIQUE USING BTREE (column);
ALTER TABLE tbl_name ADD CONSTRAINT UNIQUE USING HASH(column); |
优化表 |
OPTIMIZE TABLE tbl_name; |
使用“强制”选项重建表 |
ALTER TABLE tbl_name FORCE; |
重命名表空间 |
ALTER TABLESPACE tablespace_name RENAME TO new_tablespace_name; |
增加外键 |
ALTER TABLE tbl1 ADD CONSTRAINT fk_name FOREIGN KEY index (col1)REFERENCES tbl2(col2) referential_actions; |
删除外键 |
ALTER TABLE tbl DROP FOREIGN KEY fk_name; |