兼容性与使用限制

最近更新时间:2025-08-05 16:48:21

我的收藏
本文为您介绍分析引擎功能的使用限制和兼容性说明。
说明:
除本文中提到的支持场景,分析引擎均不支持其他特殊场景。

可用性差异

分析引擎暂不支持配置变更。
分析引擎在单节点场景下,并不具备高可用能力,若节点存在故障则会导致此分析引擎不可用。若需要分析引擎能够为您提供连续服务,请申请多节点的分析引擎。

语法限制

在分析引擎中,只能执行只读的查询语句,无法对数据进行任何变更操作,包括 DDL 和 DML 操作。
在分析引擎中,仅支持 SELECT 查询语句。而 SELECT 语句中依然存在少量关键字与语法不支持,详细请见 SELECT 语句说明
在分析引擎中,支持 CTE 语法和窗口函数。但使用 CTE 语法和窗口函数依然存在部分限制,详细请见 CTE 语法使用说明窗口函数使用说明
分析引擎,暂时不支持全文检索语法。
分析引擎暂时不支持自定义函数与存储过程。
如云数据库 MySQL 开启了分析引擎,则在“主实例”中进行某些数据变更操作会导致分析引擎的数据加载出现异常,详细说明请参考 数据加载限制

表限制

分析引擎在不同版本中建议的最多表数量存在不同。
1.2404.x:最多表数量为2000个。
2.2410.x 及以上:最多表数量为20000个。
分析引擎对于分区表的支持范围和场景有限,详细可参考 数据加载限制
分析引擎针对数据类型支持有限,当存在不支持的数据类型时,表将无法加载至分析引擎,详细可参考 数据类型

值限制

在分析引擎中,默认普通列的值大小限制为16MB。若存在列值超过16MB的表,则在尝试将其加载到分析引擎时会报错并暂停。此时,您可以 提交申请 来修改普通列支持的最大值大小。

SQL_MODE

和 MySQL 类似,分析引擎支持通过 SET [ SESSION | GLOBAL ] sql_mode='modes' 语句设置 SQL 模式来设置全局或者会话级别的 SQL Mode。也可以通过 SELECT @@sql_mode 来查询当前 SQL 的 SQL Mode。
分析引擎支持如下常见的 MySQL 系统 SQL_MODE,未提到的 SQL_MODE 均不支持。但需要注意的是虽然分析引擎支持这些 SQL_MODE,但是部分 SQL_MODE 在分析引擎中并不适用,如 NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION 等。
名称
含义
PIPES_AS_CONCAT
将 || 视为字符串连接操作符 (+)(同 CONCAT()),而不视为 OR。
ANSI_QUOTES
将 " 视为识别符,如果启用 ANSI_QUOTES,只有单引号内的会被认为是 String Literals,双引号被解释为识别符,因此不能用双引号来引用字符串。
IGNORE_SPACE
若开启该模式,系统忽略空格。例如:“user”和“user ”是相同的。
ONLY_FULL_GROUP_BY
如果未被聚合函数处理或未被 GROUP BY 的列,出现在 SELECT、HAVING、ORDER BY 中,此 SQL 不合法。
NO_UNSIGNED_SUBTRACTION
在减运算中,如果某个操作数没有符号,不要将结果标记为 UNSIGNED(支持)。
NO_BACKSLASH_ESCAPES
若启用该模式,\\ 反斜杠符号仅代表它自己。
STRICT_TRANS_TABLES
对于事务存储引擎启用严格模式,insert 非法值之后,回滚整条语句。
STRICT_ALL_TABLES
对于事务型表,写入非法值之后,回滚整个事务语句。
NO_ZERO_IN_DATE
在严格模式时,不接受月或日部分为0的日期。如果使用 IGNORE 选项,我们为类似的日期插入“0000-00-00”。在非严格模式时,可以接受该日期,但会生成警告。
NO_ZERO_DATE
在严格模式时,不要将“0000-00-00”作为合法日期。您仍然可以用 IGNORE 选项插入0日期。在非严格模式时,可以接受该日期,但会生成警告。
ALLOW_INVALID_DATES
不检查全部日期的合法性,仅检查月份值是否在1至12之间,以及日期值是否在1到31之间,仅适用于 DATE 和 DATETIME 列,TIMESTAMP 列需要全部检查其合法性。
ERROR_FOR_DIVISION_BY_ZERO
启用该模式,在 INSERT 或 UPDATE 过程中,被除数为0值时,系统产生错误。若未启用该模式,被除数为0值时,系统产生警告,并用 NULL 代替。
REAL_AS_FLOAT
将 REAL 视为 FLOAT 的同义词,而不是 DOUBLE 的同义词。
NO_DIR_IN_CREATE
创建表时,忽视所有 INDEX DIRECTORY 和 DATA DIRECTORY 指令,该选项仅对从复制服务器有用。
NO_AUTO_CREATE_USER
防止 GRANT 自动创建新用户,但指定密码除外(但是在分析引擎中没有实际作用)。
NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,可以防止自动替换存储引擎(但是在分析引擎中没有实际作用)。

字符集和排序规则

字符集(character set)是符号与编码的集合。分析引擎中的默认字符集是 utf8mb4。
排序规则(collation)是在字符集中比较字符以及字符排序顺序的规则。例如,在二进制排序规则中,比较 A 和 a 的结果是不一样的。
目前分析引擎支持的字符集和排序规则如下表:
字符集
描述
支持的排序规则
最大大小
utf8
UTF-8 Unicode
utf8_bin
3
utf8mb4
UTF-8 Unicode
utf8mb4_bin
4
注意:
当读写实例中的对象采用其他字符集时,对于数据加载至分析引擎不受任何影响,但是某一些特殊字符在分析引擎中进行查询时将存在异常,同时也会因为排序规则的不同导致排序结果不一致的情况出现。

其他行为说明

在分析引擎中执行 SELECT …… GROUP BY expr 的返回结果与 MySQL 8.0 保持一致,默认不排序,与 MySQL 5.7 会有一定区别,MySQL 5.7 会默认排序。因此,无论是在 MySQL 5.7 版本还是 MySQL 8.0 版本中构建的分析引擎,都是如此的逻辑。