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-阿裏雲