云数据库 GAUSSDB(FOR MYSQL)-不支持同步的DDL

时间:2023-11-13 15:41:23

不支持同步的DDL

  • 在创建的同步库中,支持同步表及数据,不支持同步数据库,表空间,索引,外键,函数,存储过程,触发器,视图,分区(删除),主键(增加/删除/修改),事务,用户,角色,权限,事件等对象的操作。

    表1表2提供了不支持同步的索引和分区表相关的操作。这些不支持同步的操作不会影响在HTAP节点上查询和分析数据。

  • 建表语句不能包含CHECK,表选项等。
  • 在数据同步过程中,表3中的操作会导致HTAP中数据和GaussDB(for MySQL) 中数据不一致,应尽量避免使用。
表1 不支持同步的索引相关操作

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);

表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;

优化表

OPTIMIZE TABLE tbl_name;

使用“强制”选项重建表

ALTER TABLE tbl_name FORCE;

执行空重建

ALTER TABLE tbl_name ENGINE=InnoDB;

重命名表空间

ALTER TABLESPACE tablespace_name RENAME TO new_tablespace_name;

增加表分区

ALTER TABLE {db}.tp ADD PARTITION (PARTITION p3 VALUES LESS THAN (2006) );

指定排序规则

ALTER TABLE tbl_name DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;

表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;

增加外键

ALTER TABLE tbl1 ADD CONSTRAINT fk_name FOREIGN KEY index (col1)REFERENCES tbl2(col2) referential_actions;

删除外键

ALTER TABLE tbl DROP FOREIGN KEY fk_name;

增加列

说明:

支持一般的列增加,但不支持缺省值为如下取值的场景:

  • 双引号
  • 包含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 ADD COLUMN (c2 INT GENERATED ALWAYS AS (c1 + 1)STORED);

增加存储型衍生列

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;

support.huaweicloud.com/usermanual-gaussdbformysql/gaussdbformysql_03_0167.html