云数据库 TaurusDB-HTAP标准版简介:注意事项
注意事项
- 使用HTAP查询数据时,需要注意数据库名、表名、视图名、用户名、角色名、字符串比较大小写敏感,列名和分区名大小写不敏感。
- TaurusDB数据库中的无主键表同步到HTAP时使用的明细表 (Duplicate Key table)。
- TaurusDB上执行的DDL,部分不支持同步到HTAP,可能会导致同步失败或数据不一致,使用时需注意。
具体支持同步的DDL和不支持同步的DDL如下:
- 支持同步的DDL
表1 支持同步的DDL相关操作 DDL名称
SQL样例
创建表
CREATE TABLE tbl_name (c_id int not null, c_d_id integer not null, primary key (c_id));
删除表
DROP TABLE tbl_name;
重命名表
RENAME TABLE tbl_name to new_tbl_name;
ALTER TABLE tbl_name RENAME TO new_tbl_name;
清空表数据
TRUNCATE TABLE tbl_name;
修改表注释
ALTER TABLE tbl_name COMMENT='test';
添加列(非主键列)
ALTER TABLE tbl_name ADD c_varchar varchar(2000) AFTER c_tinytext;
删除列(非主键列)
ALTER TABLE tbl_name DROP c_vchar;
修改列类型、列顺序(非主键列)
ALTER TABLE tbl_name CHANGE c_vchar c_vchar varchar(2000) default 'test' AFTER c_tinytext;
注意:不支持修改列名及默认值, DDL语句列名和默认值必须为旧值。
ALTER TABLE tbl_name MODIFY c_vchar varchar(2100) default 'test' AFTER c_tinytext;
注意:不支持修改默认值,DDL语句默认值必须为旧值。
创建视图
CREATE VIEW view_name as select * from tbl_name;
删除视图
DROP VIEW view_name;
修改视图
ALTER VIEW view_name AS select * from tbl_name;
- 不支持同步的DDL
在创建的同步库中,支持同步表及数据,不支持同步数据库,函数,存储过程,触发器,分区(删除),主键(增加/删除/修改),事务,用户,角色,权限,事件等对象的操作。
不支持同步的分区表相关操作请参见表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 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;
修改视图名称
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)REFEREN CES tbl2(col2) referential_actions;
删除外键
ALTER TABLE tbl DROP FOREIGN KEY fk_name;
- 支持同步的DDL
- 同步的数据库名称和表名称不支持中文字符。
- 为达到较好性能,可以使用如下方法对查询进行优化。
- 减少无效的计算,去除SQL中不用的字段,避免用SELECT *,简化SQL。
- 去除无用的列,若结果使用到全部列,则相对行存无法达到优化效果。
- 同步的表,默认使用OLAP引擎,主键模型。
- 视图同步说明及限制:
- 默认不同步视图,需要在创建同步任务时设置sync_view参数为true时才同步。
- 选择同步视图时,源库名称需和目标库名称保持一致。
- 不支持部分视图相关的DDL同步,例如通过rename table语句修改视图名。
- 跨库视图可能由于依赖的库未同步而失败。
- 若视图中使用了HTAP不支持的函数或语法,则同步失败。
- 同步失败的视图可以在问题解决后,直接在HTAP上手工创建。
- 当视图同步失败时会有告警和错误信息上报,错误信息可以通过连接HTAP执行show sync job命令查看SyncErrViews(同步失败的视图)和SyncErrMsg(具体错误信息),错误信息和告警可以通过执行命令清除:alter sync 同步任务名称 setting "SyncErrMsg" = "", "SyncErrViews"="";
- 视图同步失败不影响表数据同步。
- TaurusDB内核版本2.0.57.240900之后的版本才支持。
- 连接到HTAP标准版实例后,执行如下命令,可以查看从TaurusDB同步到HTAP标准版实例的数据库列表及同步状态。
此命令会查询TaurusDB中Binlog的信息,会占用TaurusDB的每小时查询配额,不宜调用过于频繁,建议每分钟小于1次。
show sync job;