最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区

最全的Apache Doris的性能優(yōu)化實(shí)戰技巧(收藏版)

優(yōu)采云 發(fā)布時(shí)間: 2022-09-09 23:37

  最全的Apache Doris的性能優(yōu)化實(shí)戰技巧(收藏版)

  隨著(zhù) Apache Doris 在越來(lái)越多的企業(yè)中得到落地和應用,越來(lái)越多用戶(hù)開(kāi)始關(guān)注如何在海量數據下對Doris的查詢(xún)性能進(jìn)行優(yōu)化。有哪些性能優(yōu)化的小技巧?如何降低查詢(xún)耗時(shí)?數據模型和分區分桶策略該如何設計?針對慢查詢(xún)該如何進(jìn)行分析及優(yōu)化?來(lái)自百度的資深研發(fā)工程師、Apache Doris PPMC 繆翎,與大家一起探討 Apache Doris 性能優(yōu)化實(shí)戰技巧,包括但不限于:嘉賓介紹繆翎,百度資深研發(fā)工程師、Apache Doris PPMC,專(zhuān)注于 Apache Doris 查詢(xún)引擎的設計和研發(fā),在數據庫查詢(xún)引擎、查詢(xún)優(yōu)化器方向有豐富的研究和實(shí)踐經(jīng)驗。

  問(wèn)答匯總問(wèn):請教一個(gè)具體場(chǎng)景的問(wèn)題,在 Apache Doris 中,如果表按天分區,每天大約 2000 至 3000 萬(wàn)數據量,通常按照業(yè)務(wù)字段查詢(xún)最近 30 天的明細信息。如何設計能支持更多的并發(fā)查詢(xún)呢?答:如果是明細查詢(xún),建議利用前綴索引、分桶分區裁剪以及 Bitmap 索引這類(lèi)的優(yōu)化策略。問(wèn):進(jìn)一步了解下,如果是 Uniq 數據模型,在查詢(xún)的過(guò)程中存在對數據的 update 操作,那么對查詢(xún)會(huì )有哪些影響呢?

  答:update 操作可以,如果 update 的操作頻率和導入占比很小,就不會(huì )對查詢(xún)有影響。問(wèn):

  1. 開(kāi)源 Doris 和 Clickhouse 之間的優(yōu)勢和劣勢是什么?2. Doris 在多線(xiàn)程設計上,有沒(méi)有使用什么設計*敏*感*詞*門(mén)檻不高,G-TB的數據量都適合使用。Doris 因為沒(méi)有其他依賴(lài),所以運維會(huì )方便一些。場(chǎng)景方面,當然是面向分析的 OLAP 場(chǎng)景。OLTP 場(chǎng)景,比如 qps 上萬(wàn)的點(diǎn)查這類(lèi)以及頻繁的 update/delete的場(chǎng)景并不適合 Doris。問(wèn):Doris 集群 不定期的出現某個(gè) BE 節點(diǎn)直接掛掉的情況,每次掛掉的 BE 節點(diǎn)并不一樣。查看監控看機器 Load 比較高(主要是磁盤(pán)IO write高)怎么排查這個(gè)問(wèn)題,怎么知道這臺機器上在做什么,有什么命令可以知道。

  答:BE 掛掉最常見(jiàn)的兩種情況:1. oom 被系統 Kill,通過(guò) dmesg 方式排查,并且結合使用方式確定 導入還是查詢(xún)導致的內存使用量過(guò)大,需要優(yōu)化使用方式。2. be core 了,通過(guò) core dump 方式找到 core 棧,core 棧就可以看到是哪部分行為導致的 BE 掛掉。并且在 Issue 里面搜索,看是否是 Doris 舊版本已知問(wèn)題。每次不一樣節點(diǎn),那就要逐個(gè)分析,可能雖然節點(diǎn)不一樣但原因都一樣。問(wèn):core dump 這個(gè)文件存放在哪里的?

  答:core dump文件存放地址可以參考鏈接 問(wèn):

  1:在做 100-200 個(gè)相同 sql 并發(fā)測試時(shí),總是越往后面的查詢(xún),尤其是做group by的時(shí)候,看 profile越慢,好像哪里卡住了似的,這個(gè)應該怎么定位是哪里的問(wèn)題?2: 通過(guò) Broker Load 導入數據時(shí),總偶然碰到查詢(xún)超時(shí),而且這個(gè)問(wèn)題是必現,我怎么定位問(wèn)題,還請給點(diǎn)指點(diǎn)。答:1. 這種 qps 性能分析問(wèn)題,主要工具是 pprof ,看看 CPU 集中耗時(shí)在哪里。2. 導入過(guò)程中的查詢(xún)超時(shí),建議先看監控,grafana 上的數據。比如是否導入占用了過(guò)多的 IO或者 cpu 等,導致了相互影響,再逐步根據 pprof + 代碼分析。問(wèn):請教下 Doris 集群規模為 6個(gè) BE節點(diǎn),在聚合模型下用天 Date做時(shí)間分區、每天數據近2億行,發(fā)現 select max(date) 性能不佳(接近10秒),看了下執行計劃發(fā)現全表掃描了,這樣設計的主要考慮是什么呢?

  答:確實(shí),如果對 Range 分區字段求 Max 或者 Min 等,邏輯上可以只讀最大分區數據。Doris 沒(méi)對這種特殊場(chǎng)景做優(yōu)化,所以是全表掃描。需要增加 Where 條件從而匹配到分區分桶裁剪,才能減少數據量。比如這樣寫(xiě) select max(date) from table where date >xxx。分區字段和索引字段需要出現在 Where 條件中效果最好。問(wèn):想問(wèn)一下,關(guān)于性能優(yōu)化這方面,與數據類(lèi)型是否有什么關(guān)聯(lián),各種數據源中的表聯(lián)合查詢(xún)的時(shí)候,對于復雜類(lèi)型的性能優(yōu)化是從哪方面著(zhù)手的?

  答:和數據類(lèi)型關(guān)系還是很大的。比如 Int 類(lèi)型的性能就會(huì )比 String 要好。復雜類(lèi)型的性能優(yōu)化我舉個(gè) Bitmap 的例子。Bitmap 的聚合函數在 Bitmap 分布相對稠密情況下,會(huì )比稀疏的要性能高不少。問(wèn):對于聚合模型, MODIFY COLUMN 某一個(gè)已經(jīng)存在的列, 從類(lèi)型 BIGINT 變更為 VARCHAR , 該表按每天分區,每天數據量 1億+,發(fā)現該表這一列歷史數據過(guò)多,一直處于 SCHEMA_CHANGE【 state is not NORMAL】 狀態(tài) (大概5小時(shí)),導致后續其他的增加列,增加動(dòng)態(tài)分區都不斷失敗重試,直到表恢復 NORMAL 狀態(tài)才成功。這種情況有什么建議嗎

  

  答:同一時(shí)間單個(gè)表只能做一個(gè) schema change 操作。所以做第一個(gè) schema change 的時(shí)候后面增加列和增加分區的操作都被禁止了。schema change 的時(shí)間過(guò)長(cháng)主要原因是表數據量大導致的。對于這種大表的表結構變更最好是等到業(yè)務(wù)不太忙的時(shí)候,比如半夜。再者,如果需要多次 schema change 建議合并為一次。問(wèn):doris 后續會(huì )添加對復雜類(lèi)型 Array、Map、Struct 的支持嗎?Doris On ES 這個(gè)拓展功能后期會(huì )進(jìn)一步優(yōu)化嗎?

  答:會(huì )支持,目前正在開(kāi)發(fā) Array 、后面還會(huì )增加對 List / Map 等復雜類(lèi)型的支持。Doris On ES 后續也會(huì )有優(yōu)化,例如聚合下推、讀寫(xiě)統一、分區裁剪等。問(wèn):2021 的 Roadmap 提到會(huì )落地向量化引擎,具體什么時(shí)間能發(fā)行呢,向量化引擎和目前查詢(xún)相比,查詢(xún)效率大概能提升多少倍呢?

  答:可以看下之前發(fā)布文章 這個(gè)月底或下月初就會(huì )發(fā)布新版向量化執行引擎問(wèn):多表關(guān)聯(lián)的物化視圖有計劃嗎?答:有計劃,可以關(guān)注下我們在 GitHub 上發(fā)布的 2022 年 RoadMap 問(wèn):請問(wèn)高吞吐量的即席查詢(xún)實(shí)時(shí)性如何,比如1張1億條數據的表,查出200萬(wàn)條數據,大約需要多少毫秒?

  答:這個(gè)差異可能會(huì )非常大,需要結合建表語(yǔ)句、查詢(xún) SQL 、機器配置、集群規模等多方面因素綜合來(lái)看。在 Doris 官網(wǎng)上基于 Star-Schema-Benchmark 標準測試數據集做過(guò)性能測試,可以參考一下 #問(wèn):后續會(huì )有 GO 語(yǔ)言版嗎?

  答:目前 Doris 還只支持 Java(FE)和 C++(BE)開(kāi)發(fā),暫時(shí)沒(méi)有GO語(yǔ)言版的計劃。問(wèn):Doris 現在是否支持修改列的名稱(chēng)?

  答:目前不支持修改列名,可以看下官網(wǎng)上的 FAQ-11 因為一些歷史原因,目前列名稱(chēng)是直接寫(xiě)入到數據文件中的。Doris 在查詢(xún)時(shí),也是通過(guò)類(lèi)名查找到對應的列的。所以修改列名不僅是簡(jiǎn)單的元數據修改,還會(huì )涉及到數據的重寫(xiě),是一個(gè)非常重的操作。后續可能通過(guò)一些兼容手段來(lái)支持輕量化的列名修改操作。問(wèn):您好,想要咨詢(xún)一下關(guān)于物聯(lián)網(wǎng)時(shí)序數據這種場(chǎng)景下是否適合?

  答:之前也有社區用戶(hù)使用 Doris 應用在時(shí)序場(chǎng)景的,主要瓶頸在寫(xiě)入頻率,不建議特別高頻的寫(xiě)入。問(wèn):接口性能優(yōu)化都有哪些好的方案

  答:首先要看你的情況是提升 QPS 還是提升單個(gè)慢查詢(xún)。先說(shuō)慢查詢(xún):1. 打開(kāi) Profile 觀(guān)察慢查詢(xún)主要的性能瓶2. 梳理 Doris 的常見(jiàn)優(yōu)化,比如 Join Reorder 、Runtime Filter、謂詞下推等等需要手動(dòng)開(kāi)啟的優(yōu)化策略,并觀(guān)察作用。3. 從數據模型入手,比如是否存在數據版本過(guò)多、數據模型和列類(lèi)型設計不合理等等問(wèn)題。問(wèn):Doris 有沒(méi)有配置參數說(shuō)明文檔以及一些性能優(yōu)化方面的調參建議。譬如影響數據導入,查詢(xún),合并參數指導,方便小白入門(mén)

  答:最直觀(guān)的就是官方文檔,詳細的話(huà)可以期待一下即將出版的書(shū) ~問(wèn):請問(wèn) String 類(lèi)型在使用上存在 Bug ,后續有在完善嗎,預計哪個(gè)版本會(huì )比較穩定呢?

  答:String 是今年新加入的功能,在功能和性能方面還在改善中。今年上半年會(huì )持續對 String 進(jìn)行優(yōu)化,如果有 String 方面的使用問(wèn)題,歡迎給 Apache Doris 開(kāi)發(fā)者郵件組發(fā)郵件:?jiǎn)?wèn):對于 Doris 的編碼質(zhì)量,后續有沒(méi)有策略或者計劃,提升產(chǎn)品質(zhì)量?

  答:開(kāi)源 Doris 目前在快速迭代中,為了保證穩定性,我們正在準備將測試框架開(kāi)源給社區。問(wèn):如果需要把 MySQL、Elastic Search 這種數據批量導入到 Doris ,有沒(méi)有推薦的工具使用?用什么方式比較好遷移數據到 Doirs 使用?

  

  答:MySQL 可以存量用csv + stream load,增量用 Binlog Load 功能,可參考文檔:ES 的話(huà) Doris 本身就支持直接讀取 ES 外表,并不一定非要導入 Doris。問(wèn):關(guān)于 BE 源碼調試有沒(méi)有什么好的建議,如果用 Mac 或 Windows 操作系統的電腦,一般怎么進(jìn)行調試?

  答:如果是 Mac 或者 Windows 電腦的話(huà),需要借用 Docker,在 Docker 里面啟動(dòng) BE 并且 gdb 調試。問(wèn):Doris擴容方便么?節點(diǎn)有無(wú)狀態(tài)?

  答:節點(diǎn)分為 FE 和 BE 兩類(lèi), FE 節點(diǎn)是管控節點(diǎn)、BE 是計算和存儲節點(diǎn),擴容比較簡(jiǎn)單,往往只需要擴展 BE 節點(diǎn)即可,支持在線(xiàn)擴縮容,擴容期間正常查詢(xún)不受影響。問(wèn):Doris 和 Elastic Search 區別在哪里?還有對于企業(yè)想從 ES 切換到這個(gè),有什么成本或者值得注意的地方,謝謝。

  答:Doris 跟 ES 稍微有些差異,Doris 是 MPP 數據庫,ES 是搜索引擎。Doris 的 SQL 更加友好、支持標準 SQL ,分布式比 ES 更完備。而全文檢索、任意列更新、分詞等 ES 特性目前 Doris 還不支持。如果同時(shí)在使用 Doris 和 ES 的話(huà),可以考慮 Doris On ES 方案。問(wèn):請問(wèn) Doris 有沒(méi)有計劃增加一個(gè)"自增函數"?或者是目前的 sequence 特性()大體也能達到自增列的效果,但它僅限 Uniq 數據模型, 有沒(méi)有計劃將其推廣到非聚合類(lèi)型的列上去,比如 Aggregate 表的 Key 列、 Duplicate 表的任意列?答:目前自增列僅限 Uniq 表,后續計劃可以到我們的 2022 Roadmap 中提出,我們會(huì )評估可行性的。問(wèn):我們最近在做響應治理:不同維度的查詢(xún)會(huì )對性能有不同的影響,比如 1 億數據的場(chǎng)景下,數據權限的條件每個(gè)人都不一樣,很多數據無(wú)法提前預聚合,此時(shí) IO 會(huì )成為高性能的最大瓶頸,請問(wèn) Doris 在這方面有什么比較好的實(shí)踐?

  答:建議使用明細模型 + 物化視圖的方式,保留明細的同時(shí),也能有預聚合的數據,而且目前 Doris 的物化視圖是可以保證基礎表與物化視圖表數據的強一致性。問(wèn):老師能不能出一些 Doris 數據庫的源碼分析文章,如果想從事數據庫方面的開(kāi)發(fā),需要學(xué)習哪些內容,希望能推薦一些書(shū)籍

  答:分析源碼的話(huà)可以去看下我們上傳在B站的視頻,可以關(guān)注 ApacheDoris 官方微信公眾號下載課件。書(shū)籍的話(huà)推薦以下兩本:《Designing Data-Intensive Applications》(中文版叫數據密集型應用系統設計,建議看英文版)和《Architecture of a Database System》問(wèn):請教一下分桶的優(yōu)化技巧答:數據分桶主要是為了分桶裁剪,并且避免數據傾斜。所以首先,最好選用像 id,uuid 這種不容易產(chǎn)生數據傾斜,且分散廣的列作為分桶列。同時(shí)可以選擇查詢(xún)的 Where 條件列作為分桶列,來(lái)更好的減少讀取的數據量,提升查詢(xún)性能。問(wèn):MySQL 業(yè)務(wù)庫是分表的,如何通過(guò) Binlog Load 把 MySQL 多表數據實(shí)時(shí)同步到 Doris 中一張表,對于這種場(chǎng)景有什么建議么?

  答:目前 Binlog Load 還不支持多張 MySQL 表同步到一張 Doris 表,后續這塊我們會(huì )優(yōu)化。問(wèn):目前是否支持部分列更新的功能?

  答:目前部分列更新比較局限,只支持在 Agg 模型上對 Value 列進(jìn)行 replace_if_not_null 的值替換。問(wèn):目前我們已經(jīng)在使用doris,所以很希望知道 Doris 后續的一些計劃和時(shí)間節點(diǎn),我們好安排自己的計劃。

  答:總體開(kāi)發(fā)計劃我們發(fā)布在GitHub上了,歡迎關(guān)注。最近有兩個(gè)重要的時(shí)間點(diǎn):1月底或2月初,我們會(huì )發(fā)布 Apache Doris 1.0 版本的 beta 版本,主要包含完整的向量化執行引擎、Manager 可視化運維平臺、Hive 外表、Lateral View、SeaTunnel Connector 等功能,正式 Release 應該在2月。3月份我們將會(huì )支持 Array 數組類(lèi)型、基于對象存儲的冷熱數據分離、內存管理優(yōu)化、Iceberg集成等功能。

  往期精彩回顧

  覺(jué)得不錯,請點(diǎn)個(gè)在看呀

0 個(gè)評論

要回復文章請先登錄注冊


官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区