本篇內(nèi)容介紹了“用sequoiasql-postgresql創(chuàng)建一個關(guān)聯(lián)表怎么優(yōu)化”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
為城關(guān)等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及城關(guān)網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、城關(guān)網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
【用戶咨詢】
用sequoiasql-postgresql創(chuàng)建一個關(guān)聯(lián)表,存入500W數(shù)據(jù)。在創(chuàng)建索引的情況下,用pg進(jìn)行簡單的group by查詢,平均耗時是50秒,是否可以進(jìn)一步優(yōu)化?
【問題描述】
1.集群部署情況
三臺主機(jī)對應(yīng)一個分區(qū)組,每臺主機(jī)均部署有coord、cata、data節(jié)點(diǎn)。
2.表屬性
一個500w數(shù)據(jù)的關(guān)聯(lián)表b_qt_swdj和一個800w數(shù)據(jù)的pg原生表b_qt_swdj1,兩個表結(jié)構(gòu)相同,一共39個字段。
3.sample和語句
對關(guān)聯(lián)表執(zhí)行查詢:
①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;
對原生表執(zhí)行查詢:
③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;
用db內(nèi)置sql執(zhí)行①,耗時57秒。執(zhí)行②,耗時33秒。
用pg執(zhí)行①,耗時50秒。執(zhí)行②,耗時44秒。
用pg執(zhí)行③,耗時8秒。執(zhí)行④,耗時3秒。
4.網(wǎng)絡(luò)帶寬
傳輸數(shù)據(jù)時約為46MB/S。
【解決辦法】
SELECT sw_scjy_yb,count(se_scjy_yb) as count FROM b_qt_swdj1 group by sw_scjy_yb;在pg耗時和使用sdb內(nèi)置sql耗時差不多,都是50S左右。跟pg關(guān)系不大。
從pg的訪問計(jì)劃(見截圖三)來看,絕大部分耗時也是在select上。
建議一:應(yīng)該考慮在sdb端對表做分區(qū),提高數(shù)據(jù)抽取并發(fā)度去提高性能。
建議二:對于大表的統(tǒng)計(jì)推薦使用SparkSQL作為sql引擎。
“用sequoiasql-postgresql創(chuàng)建一個關(guān)聯(lián)表怎么優(yōu)化”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!