667
微信
4.4 多计算引擎和Hint__第四章 DML_使用手册_分析型数据库-阿里云
4.4 多计算引擎和Hint
本节内容适用于分析型数据库的0.9.15或以上版本。
文中提及的Full MPP Mode,在公共云中当前处于公测状态,默认全体用户开通(除非用户申请关闭),用户可以按需使用。在专有云中,若您的集群或数据库没有开通该功能,请联系运维管理员或DBA开通。
Join的小表广播
在0.8.35版本后,分析型数据库支持小表广播模式进行一种特殊的高性能关联:虽然不符合关联四原则中分区列等值或分区数一致的原则,但是关联的左表(或子查询)/右表(或子查询)中有一个表(或子查询)很小(一般不建议超过3万行,5列,512KB),则可以通过小表广播模式快速关联,例如:
/*+engine=COMPUTENODE*/
select A.a, B.b from (select/*+broadcast=true*/ a from B where c=100) A join B on A.a = B.a;
其中A子查询数据量较小,是被广播的表,B表数据量无限制。这种Join性能也是较好的。
查询hint
分析型数据库在v2.0(0.9.45)后提供了两种hint用于优化查询。相关hint的使用建议咨询专业人员。
no-index
用于指定某列不使用索引。一般用于在多个where过滤条件中,存在1-2个条件筛选率非常低,导致索引装载时间消耗很长,反而不如不用索引时。
示例:
select a1, a2, count(distinct a3) rs from a join b on a.a1 = b.a1 and b.a4 in ('110', '120') and a.aa3 = 1003 and b.aa2 <= 201503 group by a1, a2;
该sql中,aa2筛选率很差,所以应该增加no-index hint
/*+no-index=[b.aa2]*/
select a1, a2, count(distinct a3) rs from a join b on a.a1 = b.a1 and b.a4 in ('110', '120') and a.aa3 = 1003 and b.aa2 <= 201503 group by a1, a2;
nocache
不常用,用于某些列在查询中不适合进入缓存时指定其不进入缓存。
用法:
/*+no-cache=[colname]*/
select ...
多计算引擎
在0.9.15或更高版本的分析型数据库中,拥有两套计算引擎:
- COMPUTENODE Local/Merge(简称LM):先前版本的旧计算引擎,优点是计算性能很好,并发能力强,缺点是对部分跨一级分区列的计算支持较差。
- Full MPP Mode(简称MPP):0.9.5版本新增的计算引擎,优点是计算功能全面,对跨一级分区列的计算有良好的支持,可以通过全部TPC-H查询测试用例(22个),和60%以上的TPC-DS查询测试用例。缺点是计算性能相对LM引擎较差,并且计算并发能力相对很差。
Full MPP Mode计算引擎目前(2016年12月起)已向全体用户公测,除非已申请关闭Full MPP Mode,否则用户可以自行判断自己的Query合适哪一种计算引擎,使用Hint强制将查询路由到某一个计算引擎中:
--强制使用COMPUTENODE LM计算引擎(默认)
/*+engine=COMPUTENODE*/
select * from ....
--强制使用Full MPP Mode计算引擎
/*+engine=MPP*/
select * from ....
目前使用Full MPP Mode时请注意以下问题:
(1)Full MPP Mode目前尚处于公测状态,阿里云不对Full MPP Mode的计算的可靠性、性能、稳定性做出承诺;
(2)Full MPP Mode查询响应时间和并发能力较差,建议用户仅在低频调用的、对性能不敏感的、必须使用Full MPP Mode计算引擎的情况下使用;
(3)Full MPP Mode计算引擎当前使用时语法结构同默认引擎有两处差异(后续会修正):1)进行timestamp/date类型和字符串比较时,需要在字符串前声明比较类型,如 m > timestamp ‘2016-08-20 00:00:00’, n < date ‘2016-08-20’ (m为timestamp类型,n为date类型)。
(4)Full MPP Mode计算引擎拥有较丰富的数学函数、字符串处理函数、窗口函数等支持,但是这些函数和功能尚未稳定,未来其功能和语法均可能修改,故使用手册中不予列出,有需要的客户可以提交工单咨询相关用法,但阿里云不对这些功能未来的兼容性和可靠性做出承诺。
分析型数据库亦支持自动对查询Query进行路由功能,可以将LM引擎不支持的查询路由给MPP引擎,尽可能兼顾性能和通用性。但是由于Full MPP Mode的稳定性和兼容性问题,默认不开启自动路由功能,有需要的用户可以进行工单申请。
开启自动路由功能后,目前以下几种情况会自动路由到Full MPP Mode:
特定函数,如row_number over等,LM模式不识别,捕获异常;
Join类:
- 事实表 join 事实表,join key全部在非分区列上;
- 不同表组的事实表 join 事实表;
- 维度表在前,left join 事实表;
- 事实表 right join 维度表(同上);
- 事实表 join 事实表,一级分区数不同。
Group By、Order By、Having类:
- Group By仅含非分区列,外层套子查询;
- Group By仅含非分区列,带Order By;
- Group By仅含非分区列,带Having。
UNION/INTERSECT/MINUS不含分区列;
SELECT 复杂表达式,如SUM/SUM, 任何带聚合函数的计算表达式等;
COUNT DISTINCT或DISTINCT非分区列。
最后更新:2016-12-06 11:56:37
上一篇:
4.3 INSERT/DELETE命令__第四章 DML_使用手册_分析型数据库-阿里云
下一篇:
5.1 数据的导入__第五章 Data Pipeline_使用手册_分析型数据库-阿里云
Pipeline概述__Pipeline管理_SDK参考手册_数据集成-阿里云
专有网络和交换机__网络_用户指南_专有网络 VPC-阿里云
公众趋势预测__阿里云ET介绍-阿里云
产品定价__购买指南_E-MapReduce-阿里云
索引切割__图片裁剪_图片处理指南_对象存储 OSS-阿里云
怎样为一个子用户授予只读访问ECS的权限___云服务器(ECS)授权问题_授权常见问题_访问控制-阿里云
设置鉴权__配置操作接口_API 手册_CDN-阿里云
API接口__SDK手册_HTTPDNS-阿里云
云邮箱IPAD POP3/IMAP协议设置方法__客户端使用_邮箱常见问题_企业邮箱-阿里云
扩容多分区磁盘__扩容磁盘概览_磁盘_用户指南_云服务器 ECS-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云