亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Oracle2PG系列之管理SQL執(zhí)行計(jì)劃

IT那活兒 / 1363人閱讀
Oracle2PG系列之管理SQL執(zhí)行計(jì)劃

點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多精彩內(nèi)容?。。?/span>


 前   言 

在我們?nèi)粘_\(yùn)維過程中或多或少都會(huì)碰到SQL執(zhí)行計(jì)劃突變的問題,應(yīng)急性解決方案基本都繞不開固定執(zhí)行計(jì)劃,Oracle也提供了豐富的工具outline、coe等。在我們最近的老案例Oracle遷移PG中,測(cè)試也發(fā)現(xiàn)了部分SQL在PG庫中的執(zhí)行計(jì)劃性能較差,由于應(yīng)用遷移工期緊以及程序代碼繁多SQL邏輯層改造成本大,最終使用pg_show_plans與pg_hint_plan這2個(gè)社區(qū)插件在數(shù)據(jù)庫層調(diào)整執(zhí)行計(jì)劃解決SQL性能問題。今天我們就來總結(jié)一下。


執(zhí)行計(jì)劃 

首先PG原生提供了explain命令來查看SQL執(zhí)行計(jì)劃,但是這個(gè)工具不能查看正在執(zhí)行的SQL執(zhí)行計(jì)劃,這點(diǎn)非常不人性化。而我們根據(jù)query text重新構(gòu)造SQL不僅費(fèi)時(shí)而且DML語句還容易引起誤操作。索性社區(qū)提供了插件pg_show_plans這個(gè)插件可以幫助我們查詢pg_stat_activity中正在執(zhí)行的SQL執(zhí)行計(jì)劃,支持PG主流版本9.5~14。
具體文檔以及安裝這里不在過多贅述,可以參考:
https://github.com/cybertec-postgresql/pg_show_plans:
安裝完成后,我們構(gòu)建用戶表50萬行,類型表500萬行,并使用uid進(jìn)行關(guān)聯(lián) ,如下:
使用pg_show_plans進(jìn)行觀察pid:19405的會(huì)話。
圖中plan字段就是實(shí)際的執(zhí)行計(jì)劃,內(nèi)容相對(duì)簡單,但還是能夠看到關(guān)鍵信息關(guān)聯(lián)條件以及tb_classinfo表的Filter條件、返回行數(shù)等。案例中就是tb_classinfo 表根據(jù)cid 4301211進(jìn)行全表掃描過濾返回1行數(shù)據(jù)再與tb_userinfo關(guān)聯(lián)查詢,老司機(jī)一看就知道可以在tb_classinfo的cid字段創(chuàng)建索引。
建完索引后,效率提升還是很明顯的。
接下來就來看如何綁定一個(gè)SQL的執(zhí)行計(jì)劃,這里社區(qū)插件也相對(duì)較多,我們采用pg_hint_plan。
具體可以參考下面的連接:
https://github.com/ossc-db/pg_hint_plan
繼續(xù)使用上文的案例,我們?cè)趖b_classinfo的cid創(chuàng)建索引后SQL使用索引掃描,這里我們使用Hint改變執(zhí)行計(jì)劃。
使用Hint seqscan成功改變計(jì)劃,我們便可以將此方式存入plan hint表固定這類SQL的執(zhí)行計(jì)劃。
注意在綁定時(shí)常量值可以使用?代替。
在計(jì)劃綁定后,重新發(fā)起SQL查詢,pg_show_plans插件成功捕獲到該SQL并打印出執(zhí)行計(jì)劃是我們綁定的計(jì)劃,在這個(gè)過程中我們發(fā)現(xiàn)計(jì)劃存入plan table時(shí)沒有標(biāo)志為,且show_plans里的計(jì)劃也沒有提示來自于哪個(gè)plan table的綁定,這方面還不夠友好。
另外Hint種類繁多具體可以參考文檔這里就不再一一介紹,本文就到此為止!



本 文 原 創(chuàng) 來 源:IT那活兒微信公眾號(hào)(上海新炬王翦團(tuán)隊(duì))


分享

收藏

點(diǎn)贊

在看

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/129668.html

相關(guān)文章

  • 開源|性能優(yōu)化利器:數(shù)據(jù)庫審核平臺(tái)Themis的選型與實(shí)踐

    摘要:正是存在問題,促使我們考慮引入數(shù)據(jù)庫審核平臺(tái)。的確,與很多互聯(lián)網(wǎng)公司相比,數(shù)據(jù)庫數(shù)十套的估摸并不是太大但與互聯(lián)網(wǎng)類公司不同,類似宜信這類金融類公司對(duì)數(shù)據(jù)庫的依賴性更大,大量的應(yīng)用是重?cái)?shù)據(jù)庫類的,且其使用復(fù)雜程度也遠(yuǎn)比互聯(lián)網(wǎng)類的復(fù)雜。 作者:韓鋒 出處:DBAplus社群分享 Themis開源地址:https://github.com/CreditEaseDBA 拓展閱讀:宜信開源|數(shù)...

    wenhai.he 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<