5.2.4 SQL开发参考
MaxCompute1SQL适用于海量数据(GB、TB、EB级别)离线批量计算的场景。提交MaxCompute作业后,会存在几十秒到数分钟不等的排队调度,所以适合处理批作业,提交一次作业批量处理海量数据。不适合直接对接需要每秒处理几千至数万笔事务的前台业务系统。
5.2.4.1 语法部分
语法上,如上图,它的语法是标准语法ANSI SQL92的一个子集,并有自己的扩展。如果是从Hive等开源数仓迁移至MaxCompute,或是长期习惯于关系型数据库SQL(MySQL、Oracle、SQL Server)语法的,建议在设计、迁移或开发阶段,仔细比对SQL语法的差异,与其他SQL语法的差异。
整体上,MaxCompute SQL更接近于同为离线数仓的Apache Hive语法,但不完全一致,例如:MaxCompute SQL在DDL上,不支持CREATE TABLE—NOT NULL,而Hive是支持的。
5.2.4.2 SQL限制项
除了SQL代码的语法差异之外,在迁移过程中,SQL限制也是不可忽略的一个检查项,可参考该链接:SQL使用限制项 ,并和原数据库(仓库)的SQL开发规范进行逐项比对,处理好平台适配工作。
5.2.4.3 数据类型
已在5.2.1.2.3章节详细说明,不再重复。
5.2.4.4 查询加速MCQA(MaxCompute Query Acceleration)
从本章节的引言部分可以了解到,MaxCompute SQL我们一般认为是分钟级别的查询效率。MaxCompute的MCQA功能可以对中、小数据量查询作业进行加速优化,将执行时间为分钟级的查询作业缩减至秒级,同时完全兼容原MaxCompute的查询功能,使用原生的MaxCompute SQL语言,并且支持所有的MaxCompute内建函数以及权限系统。
MCQA支持将主流BI工具或SQL客户端连接至MaxCompute项目,开展即席查询(Ad Hoc)或商业智能(BI)分析。
5.2.4.4.2 使用限制
此处列举主要的限制项,供使用和选型参考:
•不支持开发者版的MaxCompute(按量计费标准版、包年包月标准版、包年包月套餐版均可以使用)
•单个MaxCompute项目的MCQA作业最大并发数为120
•单次执行的作业支持并发的Worker数上限为2000个
•不支持查询外表
5.2.4.4.3 开通使用
包年包月项目(免费体验)
截止该文档编辑时,针对包年包月的MaxCompute项目,仍提供免费体验额度。该查询加速资源不占用已购买的包年包月计算资源(CU),由查询加速公共资源池提供。具体的限制项如下:
•单个MaxCompute项目,支持的最大作业并发数为5
•单个MaxCompute项目,日免费加速作业数累计为500个
•SQL扫描量在10 GB以内的作业
包年包月项目(交互式配额)
如果您是包年包月项目,并且有更高的负载、更大的作业量需求,目前对于有此类需求的客户,产品提供特殊类型的配额组——交互式配额组,单独用于MCQA查询加速作业使用,处于邀测阶段,提交工单后由研发侧核实region支持情况。如已开启,则在CU管家中新建类型为“交互式”的配额组即可使用,该配额组的CU仅用于MCQA类型加速作业使用。
按量付费项目(非开发者版)
默认MCQA为开通状态,MCQA作业使用单独的计算资源,所以相应地会单独采用自己的按量付费规则,公式为:一次MCQA作业费用=输入数据量×SQL复杂度×单价,按天维度进行汇总出账。