在创建的同步库中,支持同步表及数据,不支持同步数据库,函数,存储过程,触发器,分区(删除),主键(增加/删除/修改),事务,用户,角色,权限,事件等对象的操作。
不支持同步的分区表相关操作请参见表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; |