1. 程式人生 > >www808888webcom最近做了一次對查詢的優化之後199O8836661檢視由EXPLAIN

www808888webcom最近做了一次對查詢的優化之後199O8836661檢視由EXPLAIN

最近做了一次對查詢的優化之後,我發現了一種更好的方式來檢視由EXPLAIN生成的查詢計劃。因此,我最終決定需要做些什麼,結果就是Postgres EXPLAIN Visualizer工具(或者叫Pev):
Pev:Postgres的視覺化工具

為什麼創造Pev

我想要一款能讓使用者很輕鬆的就可以理解查詢計劃變工具,而且能讓使用者看上去很直觀。說的再具體一點,就是我想要:

◾最小的視覺干擾
◾獲取更多的資訊
◾可定製化程度較高
◾在查詢的上下文中執行計劃

讓我們看看Pev是如何實現這些要求的。我將使用下面插圖中的查詢語句生成的計劃(作為對比結果,你可以在dellstore2 資料庫執行這個查詢語句):
Pev:Postgres的視覺化工具
我注意到Pev只使用JSON格式的解釋計劃。使用以下程式碼就可以滿足要求了:
Pev:Postgres的視覺化工具

節點視覺化
首先,Pev使用了經典的樹狀圖從而將查詢計劃以視覺化的方式展現出來。我發現這比PgAdmin使用的從左到右的樹狀圖更容易檢視。
Pev:Postgres的視覺化工具
預設情況下,每個節點都顯示其型別以及相關的詳細資訊(比如正在掃描的物件或連線條件)、持續時間和關鍵資訊(比如該節點是否為某種型別的異常):
Pev:Postgres的視覺化工具
說到客戶獲取的資訊量,Pev目前正在計算以下兩個因素:

◾異常值節點(最大、最慢、最昂貴)
◾有錯誤計劃估計的節點(計劃者可能會錯過100個或更多)
www808888webcom最近做了一次對查詢的優化之後199O8836661檢視由EXPLAIN

Pev還允許進行各種定製,比如顯示計劃者的估算細節,用圖表來展示行、持續時間或成本:
Pev:Postgres的視覺化工具
如果使用者想要看到所有Postgres節點的所有內容,只需單擊標題獲得擴充套件檢視即可:
Pev:Postgres的視覺化工具
使用這些定製化功能(在左邊的設定選單中可用),使用者可以很容易地建立各種圖形,比如下面這個圖形就顯示了每個節點的執行速度有多快:
Pev:Postgres的視覺化工具

查詢顯示

我個人覺得很難將我所看到的這個計劃對映到生成它的查詢。通過在節點旁邊顯示查詢,並在可能的地方突出顯示相關部分,Pev可以幫助您實現這一點。只需單擊該節點內的藍色資料庫圖示:
Pev:Postgres的視覺化工具
我必須承認,在這一點上,突出查詢的相關部分是非常基本的,但我希望它在將來能夠得到改進。

explain.depesz.com是一個非常優秀的網站,而且它對Pev產生了很重大的影響。我就是在使用該網站以及閱讀該網站幫助文件的過程中學到了很多關於Postgres計劃是如何工作的原理。

如果你正在使用Pev,請在twitter上面@alexTatiyants,讓我知道你有多喜歡它。如果你想讓它變得更好,程式碼就在GitHub上,你可以做一點貢獻。