17742004931

基于成本的優化方法介紹與應用(1)

基于成本的優化方法介紹與應用(1)

發布時間:2020-03-23 10:45:00

與原來基于規則優化的優化框架相比,inceptorcbo優化框架采用了joinreording、bushjointreegeneration等優化方法,對經過特殊轉換后的執行...

如果您有類似需求請致電

17742004931 , 17742004931

與原來基于規則優化的優化框架相比,inceptorcbo優化框架采用了joinreording、bushjointreegeneration等優化方法,對經過特殊轉換后的執行計劃進行等價關系的代數變換,對量化后的計劃進行估計成本為可能的等價執行計劃,最終選擇成本最小的作為最重要的最終實施計劃。

在實際生產中,如果不使用CBO,SQL優化通常依賴于手動重寫語句。CBO優化器的優點是,當面對大規模的倉庫業務部署時,如果用原來的手工方法修改海量業務層的SQL,成本會很高,CBO優化器可以自動評估和優化執行計劃,而無需人工干預業務邏輯,如改變連接順序、添加mapjoinhint等,可以在提供性能的同時實現s QL業務遷移,節省大量部署時間。

目前,在多表連接用例的執行計劃優化中,最常用的是inceptorcbo。它可以支持Orc和MEM表,支持數據分區和bucket拆分,可以處理多種業務場景。我們將通過兩系列文章介紹CBO優化器的使用和應用案例。本文將介紹CBO的使用和優化性能。

收集統計數據

正如一開始所介紹的,CBO使用統計信息來計算執行計劃的成本,因此為了CBO的有效運行,用戶必須在CBO優化之前收集信息。

analyze語句可用于收集表和列級別的信息。表級信息是指關于整個表的信息,例如NumRows。列級信息是指有關特定字段的信息,例如NDV(不同值的數目)。

analyze的基本語法如下:

由于分析結果為CBO優化服務,需要根據要執行的SQL語句,找出統計信息有助于語句優化的對象,并對這些對象進行分析。從而加快有效信息的統計,有助于提高信息收集的效率。

然而,當手工構造analyze命令時,如果要優化的SQL語句非常復雜,用戶可能需要花費大量的時間和精力來分析語句、選擇分析對象和編寫語句。因此,建議使用以下預分析工具。

為了解放用戶編寫analize語句的勞動,提高分析對象選擇的準確性,interceptor提供腳本工具preanalyze,一鍵生成analize語句。

預分析與一起自動安裝。它能夠分析要運行的SQL語句,并根據分析結果自動生成和執行analyze命令。Preanalyze將包含SQL文件的SQL文件或目錄作為分析對象。下面是如何使用預分析。

支持的參數及相應含義如下:

執行結果放在根目錄﹣analyzeresult﹣898中,下圖顯示了該目錄中的文件。

指令通過--database指定相關數據庫,分析下的所有SQL文件。/并通過“-afalse”指示不需要立即執行生成的analyze命令。

為了分析目標對象,必須在InsptorServer2中進行身份驗證。上面的語句使用-vhive2切換到hive2的版本,并使用主體名稱hive驗證標識。

如果使用LDAP身份驗證,則必須指明用戶名和密碼。

如果使用Kerberos身份驗證,則必須指定原則。


聯系我們,談您的需求

立即咨詢
棋牌游戏最低提现10元 快赢481查询 网上兼职赚钱app正规 捕鱼来了弹头多少钱 杠杆炒股平台 熊猫麻将微信群 网络赚 论坛 短线股票微信交流群 大地棋牌免费下载 看今晚的四不像图+正版 软件股票