使用限制

更新时间:
复制 MD 格式

为保障集群的稳定及安全,云原生数据仓库 AnalyticDB MySQL 版有以下使用限制。

命名约束

对象

命名规则

数据库名

  • 长度不超过64个字符。

  • 以小写字符开头。

  • 可包含字母、数字以及下划线(_)。

  • 不能包含连续两个及以上的下划线(_)。

  • 不能是analyticdb,analyticdb是内置数据库。

表名

  • 长度为1~127个字符。

  • 以字母或下划线(_)开头。

  • 可包含字母、数字以及下划线(_)。

  • 不能包含引号、感叹号(!)和空格。

  • 不能是SQL保留关键字。

列名

  • 长度为1~127个字符。

  • 以字母或下划线(_)开头。

  • 可包含字母、数字以及下划线(_)。

  • 不能包含引号、感叹号(!)和空格。

  • 不能是SQL保留关键字。

索引名

长度不能超过64个字符。

账号名

  • 长度规则:

    • 3.1.9.4以下内核版本,长度为2~16。

    • 3.1.9.4及以上内核版本,长度为2~64。

  • 以小写字母开头。

  • 以小写字母或数字结尾。

  • 可包含小写字母、数字以及下划线(_)。

密码

  • 长度为8~32个字符。

  • 至少包含大写字母、小写字母、数字以及特殊字符中的三项。

  • 特殊字符为!@#¥%^&*()_+-=。

集群配额

限制

默认值

说明

每个阿里云账号可购买集群数量的最大值

30

每个阿里云账号最多可购买30个集群。若您想修改该值,请提交工单联系技术支持。

每个集群可创建数据库的最大值

2048

无

每天集群扩容、缩容或变配的总次数

12

无

数仓版预留模式集群节点磁盘空间阈值

80%

超过阈值后,集群会告警。一个用户一天最多收到4次磁盘空间超过阈值的告警。

90%

超过阈值后,集群会告警,且集群会锁定,数据无法写入。一个用户一天最多收到4次磁盘空间超过阈值的告警。

数仓版弹性模式集群一组弹性IO资源的热数据量最大值

8 TB

一组弹性IO资源的热数据量超过8 TB时,集群会锁定,数据无法写入。解决办法:扩容弹性IO资源。

湖仓版集群一组存储预留资源的热数据量最大值

8 TB

一组存储预留资源的热数据量超过8 TB时,集群会锁定,数据无法写入。解决办法:扩容存储预留资源。

企业版或基础版集群一组预留资源的热数据量最大值

8 TB

一组预留资源的热数据量超过8 TB时,集群会锁定,数据无法写入。解决办法:扩容预留资源。

每个集群可创建普通账号的最大值

256

无

每个集群的最大连接数

建议不超过50000

AnalyticDB for MySQL集群的连接数没有限制,但与集群的规格相关。对于小规格的集群来说,连接数过多会导致资源不足,无法承载。

每个集群中的白名单分组的最大值

50

无

每个白名单分组中IP个数的最大值

1000

无

每个集群中IP白名单个数的最大值

25000

无

每个集群中分区数的最大值

102400

AnalyticDB for MySQL集群中所有表的分区数之和不能超过102400。若集群中分区数超过102400,则不能再创建分区表。

您可以使用如下语句查询每个数据库中所有表的分区数:

SELECT SUM(partition_count) FROM  INFORMATION_SCHEMA.KEPLER_META_TABLES WHERE table_engine_name IN ("CSTORE", "XUANWU", "XUANWU_V2");

每个企业版或基础版集群中内表数量的最大值

80000/(Shard个数/预留资源组数)

  • Shard个数/预留资源组数向上取整。
  • 企业版预留资源组数=预留资源节点数/3。
  • 基础版预留资源组数=预留资源节点数。

提高内表数量上限的方法:

每个湖仓版或数仓版弹性模式集群中内表数量的最大值

[80000/(Shard个数/EIU组数)]*2

  • Shard个数/EIU组数向上取整。
  • 湖仓版EIU组数=存储预留资源/24 ACU。
  • 数仓版弹性模式EIU组数=弹性IO资源组数。

提高内表数量上限的方法:

每个数仓版预留模式集群(具备1~20个节点组)中表数量的最大值

80000/(Shard个数/节点组数)

Shard个数/节点组数向上取整。

增加节点组数量可以提高数仓版预留模式集群内表数量的上限。

每个集群中外表数量的最大值

50万张

无

每张表中列数的最大值

4096

无

分片(Shard)内单个分区存储数据量的最大值

21亿条

每个分片(Shard)内的单个分区最大可存储21亿条数据。

表中COMMENT最大长度

1024个字符

无

列中COMMENT最大长度

1024个字符

无

每列中单个字段的最大长度

16 MB

无

每行写入数据的最大长度

16 MB

无

列默认值长度

127个字符

无

每个查询包含的列数的最大值

1024

调整参数值:SET adb_config MAX_SELECT_ITEMS_COUNT=1000;。

调大该参数可能影响集群稳定性,不建议自行调整。

WHERE条件中ITEM最大值

256

无

IN中条件数的最大值

  • 内核版本3.2.8以下的集群,默认值是4000。

  • 内核版本3.2.8及以上的集群,默认值为20000。

调整参数值:SET adb_config MAX_IN_ITEMS_COUNT=3000;。

参数调整过大时,SQL过于复杂会影响查询性能。

超时说明

操作

时间限制(ms)

超时说明

创建集群

600000

无

删除集群

300000

无

扩容集群

600000

无

创建数据库

10000

无

删除数据库

10000

无

创建表或视图

10000

无

删除表或视图

10000

无

清空表(TRUNCATE TABLE)

60000

无

新增列

10000

无

删除列

60000

无

更新列

60000

无

单次查询

1800000

单次查询的执行超时时间。超时后,系统自动终止查询。

配置以下参数,可以修改单次查询的执行超时时间。

  • 配置名:QUERY_TIMEOUT

  • Hint的形式:query_timeout

说明

检测查询超时的线程执行频率为1000ms/次,设置单次查询时间需大于1000ms,否则可能会不生效。

写入数据(INSERT INTO)

300000

无

  • INSERT SELECT FROM

  • INSERT UPDATE FROM

  • INSERT DELETE FROM

24*3600000

执行超时时间。超时后,系统自动终止执行。

配置以下参数,可以修改SQL语句的执行超时时间。

  • 配置名:INSERT_SELECT_TIMEOUT

  • Hint的形式:insert_select_timeout

常见问题

集群的分片数就是表的分片数吗?

是的。假设集群的分片数是32,则表示表的分片数是32。

如何查询分片数(Shard个数)?

  • 在创建AnalyticDB for MySQL集群时,Shard的数量就已确定。数仓版集群可以在创建后修改集群Shard个数,而企业版、基础版及湖仓版则不支持修改。

    您可以参考下表,了解规格和Shard个数的对应关系。

    企业版、基础版、湖仓版、数仓版弹性模式

    预留资源组数/EIU组数/弹性IO资源组数

    Shard个数

    0、1

    64

    2~3

    64

    4~7

    96

    8~15

    256

    16~31

    384

    32~63

    512

    >=64

    1024

    说明
    • 企业版预留资源组数=预留资源节点数/3。

    • 基础版预留资源组数=预留资源节点数。

    • 湖仓版EIU组数=存储预留资源/24 ACU。

    数仓版预留模式

    节点组数

    Shard个数

    1

    16

    2~3

    64

    4~7

    96

    8~15

    236

    16~31

    384

    32~63

    512

    >64

    1024

  • 您也可以执行SQL查询集群的Shard个数:SELECT count(1) FROM information_schema.kepler_meta_shards;。