由于分析引擎通过列式存储构建数据,因此在某些特殊的 MySQL 使用场景下,会存在部分场景不支持的情况。如下所示:
无主键且无唯一键的表支持说明
在 1.2404.x 版本中:当表没有主键又没有唯一键时,表将无法加载到分析引擎中。这要求表必须包含主键或者唯一键。在 LibraDB 引擎中,将默认使用表主键或唯一键进行列式数据构建。同时在 1.2404.x 版本中,不支持任何形式的对表主键进行修改的 DDL 语句。若在云数据库 MySQL 中对主键进行修改,则分析引擎的此表将停止加载并不可查询。若需要恢复使用,则需要将此表移除加载,然后再重新进行数据加载。
在 2.2410.x 版本中:表在无主键或无唯一键时也能加载到分析引擎中。同时也支持表主键的变更操作。但依然存在部分特殊场景不支持,不支持的场景如下:
表仅存在 time、date、timestamp、datetime、float、double 这些字段,无其他字段类型。
当对表进行了主键的 DDL,导致表中仅存在如上字段类型,无其他字段类型时。
使用 float、double 字段类型作为主键的表不支持加载到分析引擎
float、double 字段为浮点字段类型,不支持这两种字段类型作为主键的表将数据加载到分析引擎中。
存储过程、自定义函数、触发器、外键约束、event、索引均不会在分析引擎加载
不支持在列式存储中构建以上特殊对象。
存在字段为空间类型的表无法加载到分析引擎
存在空间字段类型的表无法加载到分析引擎。
不支持临时表加载到分析引擎
由于临时表数据变更不记录日志,因此无法加载临时表的数据到分析引擎中。
加载到分析引擎中的表被 rename 后的行为
当某一个表被加载到分析引擎中后,使用 rename 语句将表改名后,被 rename 后的表也将在分析引擎中自动加载。此时再创建一张与被 rename 的表的同名表,此新建的表亦会自动加载到分析引擎。如表 A 已经在分析引擎中加载为列存,此时将表 A 改名为表 B,则在分析引擎中,此表也会被改为表 B。同时若在读写实例中又新增一张表为表 A,则表 A 同样会自动加载到分析引擎中。
不支持主键字段为超长数字类型的表加载为列存
在 1.2404.x 版本中,不支持主键为 Decimal 超出128长度的表加载为列存。
在 2.2410.x 版本中,不支持主键为 Decimal 超出256长度的表加载为列存。
不支持列级权限
分析引擎默认会同步主实例中的所有用户关于对象的查询权限,但是不会同步列级权限。故无法在分析引擎中实现对列级权限的管控。
不支持的数据类型
不支持的表结构
分析引擎不支持生成列语法,无论是虚拟列还是物理列。对于包含生成列的表,无法加载到分析引擎中。
不支持的字段类型转换
在分析引擎中存在某一些字段类型的转换不支持,若云数据库 MySQL 的主实例中进行字段类型的修改,可能会导致分析引擎的数据加载任务中止,所有表加载状态变为暂停中。详细的类型转换支持情况请参考 类型转换函数支持说明。
注意:
若在云数据库 MySQL 中对表的字段类型进行修改,而此类型修改在分析引擎中不支持,则所有表加载状态均会暂停。此时若需要恢复使用,则需要将此表移除加载后,再重新对此表进行数据加载。
分区表的 DDL 同步说明
在 1.2404.x 版本中:分区表默认可以加载到分析引擎中并且支持查询。但是无法支持对分区表的分区执行相关 DDL 的同步。例如:重建分区、对分区进行 OPTIMIZE、修复分区、CHECK 分区、交换分区、删除分区、合并分区等操作。同时在分析引擎中也不支持单独针对某个子分区进行查询。
注意:
当在云数据库 MySQL 的主实例中对分区表进行 drop 子分区、truncate 分区或执行 exchange 分区时,此表在分析引擎中将不可查询。若需要恢复使用,则需要将此表移除加载,然后再重新进行数据加载。
在 2.2410.x 版本中:支持将分区表加载到分析引擎中,并且支持在源端对分区表进行如下 DDL 变更。
支持 Range/List 分区表的 Drop Partition/Subpartition template。
支持 Range/List 分区表的 Add Partition/Subpartition template。
在无函数场景下,支持的分区数据类型有:Uint8、Uint16、Uint32、Uint64、Int8、Int16、Int32、Int64。
支持的分区函数有:year、month、day、to_days、unix_timestamp。这几个函数支持的数据类型有:DATE、DATETIME、TIMESTAMP。 其中 to_days 函数支持字符串作为函数入参。
普通表的 DDL 同步说明
在云数据库 MySQL 主实例中,对表的 DDL 操作均会正常同步至分析引擎中。但存在如下几种场景会导致表在分析引擎下使用存在异常表现:
对表执行 DDL,导致表存在本文中上述提到的不支持场景会导致对象无法在分析引擎中正常使用。
对表进行 PT 变更、Gh-ost 变更、阿里云 DMS 的无锁变更场景均能够正常同步。
对行数超过100万以上的表进行主键相关的变更(添加、删除、变更主键)均会导致此表暂停同步到分析引擎。建议超过100万行以上的表的主键变更操作通过 PT 工具等进行 DDL 执行。