PostgreSQL EXPLAIN 視覺化工具

將 EXPLAIN ANALYZE JSON 轉成易讀的計畫樹,附耗時、估計與緩衝區資訊

輸入

貼上 EXPLAIN (FORMAT JSON) 的輸出。也支援帶有 QUERY PLAN 標題與 + 續行標記的 psql 輸出。

最多 5 MB,在瀏覽器中分析,絕不儲存。

摘要

貼上 PostgreSQL EXPLAIN 執行計畫

執行下方指令,將 JSON 結果貼到左側,或載入範例。

建議指令

EXPLAIN (
  ANALYZE,
  BUFFERS,
  SETTINGS,
  WAL,
  VERBOSE,
  FORMAT JSON
)
SELECT ...;

ANALYZE 會實際執行陳述式。請用 BEGIN 和 ROLLBACK 包住 INSERT、UPDATE 或 DELETE。

執行計畫

貼上有效的執行計畫後,這裡會顯示計畫樹。

等待 EXPLAIN 執行計畫。

顯示內容

PostgreSQL EXPLAIN Visualizer 會將 EXPLAIN (FORMAT JSON) 輸出轉換為可收合的計畫樹、可排序的節點表格,以及格式化的原始 JSON。摘要顯示執行與規劃時間、節點數、最慢節點、最大的列數估計偏差,以及從共用緩衝區之外讀取的區塊數。選取任一節點即可查看 PostgreSQL 回報的所有欄位。

如何擷取執行計畫

執行 EXPLAIN (ANALYZE, BUFFERS, SETTINGS, WAL, VERBOSE, FORMAT JSON) 加上你的查詢,然後貼上結果。帶有 QUERY PLAN 標題、+ 續行標記與列數頁尾的 psql 輸出會自動清理。ANALYZE 會執行陳述式,因此請用 BEGIN 和 ROLLBACK 包住 INSERT、UPDATE 與 DELETE。未使用 ANALYZE 的計畫仍會顯示成本與估計,但會略過以時間為基礎的發現。

指標如何計算

總耗時為每次迴圈的實際時間乘以迴圈次數;在 Gather 節點之下會除以處理程序數,避免重複計算平行工作。自身耗時扣除子節點的總耗時且不低於零,因此在平行計畫、CTE、InitPlan 與 SubPlan 中為近似值。估計倍數比較每次迴圈的實際列數與估計列數。EXPLAIN 的緩衝區計數包含子節點,因此自身數值已扣除子節點。區塊大小以預設的 8 kB 計算。

發現與限制

發現是根據計畫數字所做的觀察:較大的列數估計偏差、內側執行次數很多的 Nested Loop、捨棄大部分列的循序掃描、溢寫到磁碟的排序與雜湊、暫存檔、來自共用緩衝區之外的讀取,以及佔據大部分執行時間的節點。建議都很審慎,不會點名要建立的特定索引,因為單憑執行計畫無法得知查詢頻率、寫入負載或資料分布。

隱私

執行計畫可能透露資料表名稱、結構描述名稱、條件式與常值。計畫在你的瀏覽器中解析,大型計畫在 Web Worker 中處理,絕不會上傳、記錄或儲存。只會記住所選的檢視(樹狀、表格或原始)。

CodingTool 已正式上線於

Launched on StartupBaseCodingTool.dev - Free, Fast & Easy Developer Tools in One Place | Product HuntCodingTool - Featured on Startup FameFazier badgeListed on Turbo0Featured on Twelve ToolsFeatured on Findly.toolsLaunchpadly Startup DirectoryCodingTool.dev — Featured on Smol Launch