【巨杉數據庫Sequoiadb】用pg對500W數據進行group by操做,耗時過長(50秒)

【用戶諮詢】
用sequoiasql-postgresql建立一個關聯表,存入500W數據。在建立索引的狀況下,用pg進行簡單的group by查詢,平均耗時是50秒,是否能夠進一步優化?
【問題描述】
1.集羣部署狀況
三臺主機對應一個分區組,每臺主機均部署有coord、cata、data節點。
2.表屬性
一個500w數據的關聯表b_qt_swdj和一個800w數據的pg原生表b_qt_swdj1,兩個表結構相同,一共39個字段。
3.sample和語句
對關聯表執行查詢:
①SELECT sw_scjy_yb,count(se_scjy_yb) as count FROM b_qt_swdj group by sw_scjy_yb;
②SELECT count(1) from b_qt_swdj;
對原生表執行查詢:
③SELECT sw_scjy_yb,count(se_scjy_yb) as count FROM b_qt_swdj1 group by sw_scjy_yb;
④SELECT count(1) from b_qt_swdj1;sql

用db內置sql執行①,耗時57秒。執行②,耗時33秒。 
用pg執行①,耗時50秒。執行②,耗時44秒。

用pg執行③,耗時8秒。執行④,耗時3秒。
4.網絡帶寬網絡

傳輸數據時約爲46MB/S。

5.有關截圖 見附件《截圖三》併發

【解決辦法】
SELECT sw_scjy_yb,count(se_scjy_yb) as count FROM b_qt_swdj1 group by sw_scjy_yb;在pg耗時和使用sdb內置sql耗時差很少,都是50S左右。跟pg關係不大。
從pg的訪問計劃(見截圖三)來看,絕大部分耗時也是在select上。
建議一:應該考慮在sdb端對錶作分區,提升數據抽取併發度去提升性能。
建議二:對於大表的統計推薦使用SparkSQL做爲sql引擎。post

相關文章
相關標籤/搜索