国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Oracle2PG系列之管理SQL執行計劃

IT那活兒 / 1296人閱讀
Oracle2PG系列之管理SQL執行計劃

點擊上方“IT那活兒”,關注后了解更多精彩內容!!!


 前   言 

在我們日常運維過程中或多或少都會碰到SQL執行計劃突變的問題,應急性解決方案基本都繞不開固定執行計劃,Oracle也提供了豐富的工具outline、coe等。在我們最近的老案例Oracle遷移PG中,測試也發現了部分SQL在PG庫中的執行計劃性能較差,由于應用遷移工期緊以及程序代碼繁多SQL邏輯層改造成本大,最終使用pg_show_plans與pg_hint_plan這2個社區插件在數據庫層調整執行計劃解決SQL性能問題。今天我們就來總結一下。


執行計劃 

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



本 文 原 創 來 源:IT那活兒微信公眾號(上海新炬王翦團隊)


分享

收藏

點贊

在看

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129668.html

相關文章

  • 開源|性能優化利器:數據庫審核平臺Themis的選型與實踐

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

    wenhai.he 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<