SQL使用限制项

MaxCompute SQL是专门为大规模数据集设计的SQL语言,在服务大规模数据场景的同时,也需要遵循一定的限制来确保系统的稳定性和运行效率,本文为您介绍MaxCompute SQL的限制项。

限制项

最大值/限制条件

分类

说明

表名长度

128字节

长度限制

表名、列名中不能有特殊字符,必须以字母开头,且只能使用英文小写字母(a-z)、英文大写字母(A-Z)、数字和下划线(_)。

注释长度

1024字节

长度限制

长度不超过1024字节的有效字符串。

表的列定义

1200个

数量限制

单表的列定义个数最多为1200个。

单表分区数

60000个

数量限制

单表的分区个数最多为60000个。

表的分区层级

6级

数量限制

在表中创建的分区层次不能超过6级。

屏显

10000行

数量限制

SELECT语句屏显最多输出10000行。

INSERT目标个数

256个

数量限制

MULTI-INSERT场景,目标表的数量限制为256个。

UNION ALL

256个

数量限制

UNION ALL场景,最多允许合并256个表。

MAPJOIN

128个

数量限制

MAPJOIN场景,最多允许连接128个小表。

MAPJOIN内存限制

512 MB

数量限制

MAPJOIN场景,所有小表的内存不能超过512 MB。

ptinsubq

1000行

数量限制

子查询中存在分区列时,子查询的返回结果不能超过1000行。

SQL语句长度

2 MB

长度限制

SQL语句的最大长度为2 MB。包括您使用SDK调用SQL的场景。

列记录长度

8 MB

数量限制

表中单个单元的最大长度为8 MB。

IN的参数个数

1024

数量限制

IN的最大参数限制,例如in (1,2,3….,1024)。如果in(…)的参数过多,会影响编译性能。1024为建议值,不是限制值。

jobconf.json

1 MB

长度限制

jobconf.json的大小为1 MB。当表包含的分区数量较多时,大小可能超过jobconf.json,超过1 MB。

视图

不可写

操作限制

视图不支持写入,不支持INSERT操作。

列的数据类型

不可修改

操作限制

不允许修改列的数据类型及列位置。

Java UDF函数

不允许为ABSTRACT或者STATIC

操作限制

Java UDF函数不能为ABSTRACTSTATIC

最多查询分区个数

10000个

数量限制

最多查询分区个数不能超过10000个。

SQL执行计划长度

1 MB

长度限制

MaxCompute SQL生成的执行计划不能超过1 MB,否则会触发FAILED: ODPS-0010000:System internal error - The Size of Plan is too large报错。

单作业最大执行时间

72小时

运行时长限制

默认情况下,SQL单个作业的最长运行时间为24小时,可以通过下面的参数设置,将单个作业的最长运行时间增加到72小时。目前SQL作业不能超过72小时,超过后会自动停止运行。

set odps.sql.job.max.time.hours=72;
说明

上述部分MaxCompute SQL限制项不支持修改。