由于只读分析引擎通过列式存储构建数据,在某些特殊的 MySQL 使用场景下,会存在部分场景不支持的情况。如下所示:
无主键且无唯一键的表不支持加载到只读分析引擎
当表没有主键又没有唯一键时,表将无法加载到只读分析引擎中。这要求表必须包含主键,或者包含唯一键。在 LibraDB 引擎中,将默认使用表主键或唯一键进行列式数据构建。
使用 float、double 字段类型作为主键的表不支持加载到只读分析引擎
float、double 字段为浮点字段类型,不支持这两种字段类型作为主键的表将数据加载到只读分析引擎中。
存储过程、自定义函数、触发器、外键约束、event、索引均不会在只读分析引擎加载
不支持在列式存储中构建以上特殊对象。
存在不支持的字段类型的表可加载到只读分析引擎,但是相关列不支持查询
不支持此类字段在只读分析引擎中查询:SET、ENUM、Spatial Data Types、JSON。存在如上列的表在只读分析引擎中查询,列值将会为空。
所有针对分区表的 DDL 语句将不会在只读分析引擎中生效
分区表默认可以加载到只读分析引擎中并且支持查询。但是在只读分析引擎中,无法支持对分区表的分区执行相关 DDL 的同步。例如:重建分区、对分区进行 OPTIMIZE、修护分区、CHECK 分区、交换分区、删除分区、合并分区等操作。同时也不支持在只读分析引擎中单独针对某个子分区进行查询。
注意:
当在 TDSQL-C MySQL 版读写实例中对分区表进行 drop 子分区、truncate 分区或执行 exchange 分区时,此表在只读分析引擎中将不可查询。若需要恢复使用,则需要将此表移除加载,再重新进行数据加载。
不支持临时表加载到只读分析引擎
由于临时表数据变更不记录日志,因此无法加载临时表的数据到只读分析引擎中。
不支持对表进行关于主键的任何修改
因为列存表会基于行存表的主键或唯一键进行数据重组织,故不能对 TDSQL-C MySQL 版的表进行任何主键的修改,例如:删除主键、修改主键为其他字段、添加字段为联合主键等操作。当表没有主键时,列存表将基于唯一键进行构建,在此类场景中,也不能对唯一键进行修改。
注意:
若在 TDSQL-C MySQL 版中对主键进行修改,则只读分析引擎的此表将停止加载并不可查询。若需要恢复使用,则需要将此表移除加载,再重新进行数据加载。
加载到分析引擎中的表被 rename 后的行为
当某一个表被加载到分析引擎中后,使用 rename 语句将表改名后,被 rename 后的表也将在分析引擎中自动加载。此时再创建一张与被 rename 的表的同名表,此新建的表亦会自动加载到分析引擎。如表 A 已经在只读分析引擎中加载为列存,此时将表 A 改名为表 B,则在只读分析引擎中,此表也会被改为表 B。同时若在读写实例中又新增一张表为表 A,则表 A 同样会自动加载到只读分析引擎中。
不支持的表创建操作
当对整库或者整实例进行预加载到分析引擎时,在 TDSQL-C MySQL 版读写实例中执行
create table … select
语句,此时此表将无法自动加载到分析引擎,若想要此表加载到分析引擎,则需要在表完成创建后将此表从分析引擎加载列表中移除,再通过控制台操作将此表加载到分析引擎。不支持列级权限
只读分析引擎默认会同步读写实例中的所有用户关于对象的查询权限,但是不会同步列级权限。故无法在只读分析引擎中实现对列级权限的管控。
不支持的数据类型
不支持的的表结构
只读分析引擎不支持生成列语法,无论是虚拟列还是物理列。当表定义语句中包含生成列语法,会导致数据加载中断,如存在此类场景,请将表从只读分析引擎的表加载列表中移除。
视图的加载
不支持的字段类型转换
在只读分析引擎中存在某一些字段类型的转换不支持,若在 TDSQL-C MySQL 版的读写实例中进行表类型的转换,可能会导致只读分析引擎的数据加载任务中止,所有表加载状态变为暂停中。
注意:
若在 TDSQL-C MySQL 版中对表的字段类型进行修改,而此类型修改在只读分析引擎中不支持,则所有表加载状态均会暂停。此时若需要恢复使用,则需要将此表移除加载后,再重新对此表进行数据加载。
常见的字段类型转换支持情况如下表:
场景 | 是否支持 | 备注 |
数字类型的相互转换(int、float、decimal) | 支持,但是与 MySQL 一样,某些类型转换会损失精度 | bit 为不支持的数据类型,故转换也不支持。 |
日期时间类型相互转换 | date\\datetime 可以转换为 time,date,datetime 类型。 time 类型无法转换为 date 和 datetime 类型。 year,month 与 date、datetime 无法互转。 时间转换可能导致时间精度丢失,逻辑与 MySQL 保持一致。 | 在上面支持情况中,未提到的场景当前均不支持。 |
日期时间类型与数字类型互转 | 不支持,完全不支持日期时间类型与数字类型互相转换 | 无。 |
字符类型与所有类型互转 | 支持,但是字符类型有长度限制,不同长度的设置会导致截断。同时若表中存在无法转换的行,则在读写实例就会导致变更失败。 | 如果字符串转为其他不支持的字段类型,同样会导致结果查询不出来。 |
JSON、ENUM、空间等类型转换为字符类型 | 支持,同时这些不支持的字段类型在转换为字符串后,在只读分析引擎中亦可正常被查询出来。 | 无。 |
其他字段类型的转换 | 不支持,在表格中未提到的字段类型转换均不支持 | 无。 |