男生插女生下面的视频_麻豆视频福利_国产视频不卡在线_黑人巨大精品欧美一区二区区

GBase新聞

專注于數(shù)據(jù)庫軟件產(chǎn)品和服務(wù),致力于成為用戶最信賴的數(shù)據(jù)庫產(chǎn)品供應(yīng)商

用戶實(shí)操 | GBase 8a MPP Cluster慢SQL分析排查和優(yōu)化方法

發(fā)布時(shí)間:2023-06-26

GBase 8a MPP Cluster數(shù)據(jù)庫采用分布式大規(guī)模并行處理架構(gòu),常用于OLAP分析型場景。此類場景中通常基礎(chǔ)數(shù)據(jù)量比較大,不同SQL運(yùn)行時(shí)長差異較大。不同于MYSQL等交易型數(shù)據(jù)庫,其負(fù)載多為高并發(fā)的短事務(wù)類型,慢查詢SQL任務(wù)可通過設(shè)置固定閾值來統(tǒng)一對執(zhí)行時(shí)間過長的SQL進(jìn)行記錄,分析型場景由于業(yè)務(wù)特點(diǎn)存在SQL正常執(zhí)行時(shí)間從幾秒鐘到幾小時(shí)都有可能,因此無法通過簡單方式來判斷SQL任務(wù)是否異常。本文總結(jié)了GBase 8a MPP Cluster數(shù)據(jù)庫中SQL運(yùn)行緩慢的分析排查和優(yōu)化方法,供其他用戶參考。

排查和優(yōu)化方法

SQL任務(wù)歷史性能對比分析:

通過開啟GBase 8a的audit_log審計(jì)日志,可以連續(xù)收集周期性任務(wù)的執(zhí)行時(shí)間,通過對比相同SQL任務(wù)歷史執(zhí)行時(shí)長可以判定相同任務(wù)SQL長周期內(nèi)的執(zhí)行耗時(shí)趨勢,通過對比發(fā)現(xiàn)執(zhí)行性能異常情況,并進(jìn)行針對性的分析。如,相同SQL任務(wù)在一定周期內(nèi)執(zhí)行時(shí)間逐漸變長,則需要結(jié)合表內(nèi)數(shù)據(jù)量變化趨勢、SQL任務(wù)類型需要訪問全量數(shù)據(jù)還是只訪問增量數(shù)據(jù)等進(jìn)行分析。

執(zhí)行計(jì)劃分析:

對于性能異常的SQL,通常先通過執(zhí)行計(jì)劃分析執(zhí)行步驟是否存在可優(yōu)化的空間。GBase 8a提供的explain分布式執(zhí)行計(jì)劃,可以提供SQL任務(wù)的執(zhí)行順序和步驟,常見的執(zhí)行計(jì)劃中的問題和優(yōu)化方法包括:

  • 避免不合理的動(dòng)態(tài)重分布或者拉復(fù)制表降低數(shù)據(jù)在節(jié)點(diǎn)間重分布的代價(jià);

  • 檢查join列的字段類型,避免因字段類型不一致導(dǎo)致的數(shù)據(jù)動(dòng)態(tài)重分布;

  • 調(diào)整不合理的join順序,避免出現(xiàn)笛卡爾積導(dǎo)致中間結(jié)果集過大;

  • 評(píng)估哈希索引的必要性,去除不必要的哈希索引;

表數(shù)據(jù)分布分析:

通常表在各節(jié)點(diǎn)間的數(shù)據(jù)分布會(huì)影響查詢性能,當(dāng)表數(shù)據(jù)分布在節(jié)點(diǎn)間出現(xiàn)嚴(yán)重的傾斜分布時(shí),不同的節(jié)點(diǎn)會(huì)因處理的數(shù)據(jù)量差異較大出現(xiàn)木桶效應(yīng)。對于數(shù)據(jù)分布存在嚴(yán)重傾斜的表,可以通過調(diào)整表的分布鍵方式將數(shù)據(jù)均勻打散,常見的分布鍵選擇策略包括:

  • 優(yōu)先考慮大表間的JOIN,盡量讓大表JOIN條件的列為Hash分布列(相關(guān)子查詢的相關(guān)JOIN也可以參考此原則),以使得大表間的JOIN可以直接下發(fā)到各節(jié)點(diǎn)分布式執(zhí)行;

  • 其次考慮GROUP BY,盡量讓GROUP BY帶有Hash分布列,讓分組聚合一步完成;

  • 當(dāng)有多個(gè)join或group列可選擇時(shí),優(yōu)先選擇唯一值多(count(distinct)值大)的列做Hash分布列,讓數(shù)據(jù)均勻分布;

  • 通常是等值查詢的列,并且使用的頻率很高的應(yīng)考慮建立為hash分布列;

通過詳細(xì)trace日志分析SQL任務(wù)瓶頸:

對于一些慢SQL需要詳細(xì)分析各節(jié)點(diǎn)的執(zhí)行日志,通過日志發(fā)現(xiàn)某個(gè)節(jié)點(diǎn)是否相較其他節(jié)點(diǎn)明顯執(zhí)行緩慢,如果存在較慢的節(jié)點(diǎn)則進(jìn)一步排查是什么原因?qū)е碌摹3R姷那闆r有數(shù)據(jù)傾斜、并發(fā)過高、參數(shù)設(shè)置不合理、數(shù)據(jù)分布特征等原因造成。需要根據(jù)不同的情況,通過調(diào)整表數(shù)據(jù)分布、設(shè)置合理的線程池和并行度(主要排查gbase_parallel_execution、gbase_parallel_degree以及gbase_parallel_max_thread_in_pool等參數(shù))、調(diào)整操作系統(tǒng)參數(shù)、使用hint影響具體執(zhí)行計(jì)劃等方式進(jìn)行調(diào)優(yōu)。

各節(jié)點(diǎn)軟硬件參數(shù)配置檢查:

排查CPU超線程、虛擬內(nèi)存、透明頁和IO調(diào)度參數(shù)等配置項(xiàng),查看是否按照廠商建議進(jìn)行配置。

總結(jié)

分布式分析型數(shù)據(jù)庫由于其多節(jié)點(diǎn)并行的部署環(huán)境及OLAP負(fù)載類型復(fù)雜的特點(diǎn),其SQL任務(wù)調(diào)優(yōu)相比傳統(tǒng)單機(jī)交易型數(shù)據(jù)庫更加復(fù)雜,需要更加系統(tǒng)的方法論指導(dǎo),本文的目的在于對日常運(yùn)維工作中針對GBase 8a數(shù)據(jù)庫的SQL性能分析和優(yōu)化思路進(jìn)行總結(jié),期望對從事數(shù)據(jù)庫運(yùn)維工作的讀者提供一些可以借鑒的思路和方法,達(dá)到交流思路互相學(xué)習(xí)的目的。