LoginSignup
15
4

PostgreSQL実行計画可視化ツールおすすめ

Last updated at Posted at 2023-12-11

TL;DR

  • 無料、情報量、UXから、以下をおすすめ
  • pev2(explain.dalibo.com)
    • pev(tatiyants.com/pev/)ベースに奇麗で見やすく使いやすい
  • Depesz EXPLAIN(explain.depesz.com)
    • 実行計画のテキスト出力ベースで見れる
  • pev(tatiyants.com/pev/)
    • 一覧の情報はまあまあ。各ノードをクリックすると表示される情報量が多め
  • 1番他人におすすめできるのはpev2(explain.dalibo.com) 個人的に好きなのはpev(tatiyants.com/pev/)

情報入手元

以下が紹介されてます

  • pev2(explain.dalibo.com)
  • explain.depesz.com
  • pgMustard
  • explain-postgresql.com

pev2(explain.dalibo.com)

オープンソースのPostgres Explain Visualizer 2(https://github.com/dalibo/pev2 )のWEBホスティングです

サイト下部に記載のあるとおり、EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS, FORMAT JSON)したSQLと実行計画を投入します(実行計画貼るときにヘッダーも気にせず貼っちゃいます)。

補足:

  • JSONでなくTEXT形式(フォーマット未指定時デフォルト)でも大丈夫です & SQL貼らず実行計画だけでも大丈夫です
  • 他のサイトも同様です。ただしpev(tatiyants.com/pev/)のみ、正しいJSONしか受け付けませんでした

image.png

こんな感じで出力されます

image.png

左ペインで初期値でIOが選択されています。Read/Writeで色分けしてくれそうに見えますがされてません。これはtrack_io_timingが無効(デフォルト)で実行計画にioとbufferの情報が含まれていないためです。
track_io_timingパラメータを有効化し、BUFFERSを指定した実行計画を貼れば表示されると思いますが、track_io_timingを有効化すると高負荷の原因になるため要注意です(以下リファレンスより)。

このパラメータはデフォルトで無効になっています。その理由は、現時点の時刻をオペレーティングシステムに繰り返し問い合わせるので、プラットフォームによっては深刻な負荷の原因になります。

ノード(要素)ごとのtime, rows, costなどは確認でき有用です。

image.png

右ペインで、緑や赤のバーが延びているのはcostです。costが一番高いものが赤、次いで黄色(この実行計画にはありません)、次いで緑となります。
各ノードをつなぐ線の太さが異なりますが、太いものがtime(実行時間)が長い部分になっています。
各ノードをクリックすると詳細が表示されます。
(ここでもIO(IO & Buffersのタブ)は見れません)

image.png

image.png

色々試してると、timeが大きいからといってrows/costsが大きいというわけでもなかったり、けっこう一致しないもんだなと、ちょっとした知見になります。

こちらのURLにアクセスすると私の突っ込んだ実行計画見れるのでお試しください^^: https://explain.dalibo.com/plan/f64da0af59128e61#plan/node/1
(どのくらいの期間保存されてるのかは不明です)

Depesz EXPLAIN(explain.depesz.com)

SQLと実行計画を投入します

image.png

元々の実行計画の出力ベースで、時間がかかっている部分(exclusive/inclusive)や行数の大きいものが見やすくなっています。
exclusive=そのノード単体の実行時間
inclusive=サブノード込みの実行時間

これはこれでありです

image.png

statsタブも有用です

image.png

私の投入した実行計画はこちらで試せます: https://explain.depesz.com/s/y6VV#html

pgMustard

有料(無料トライアルあり)

無料トライアル登録しようと思いましたが(Github/Googleでのサインイン)、提供されてるサンプルで使用感は確認できたので登録しませんでした。プライバシーポリシーでGoogleアカウントの情報が幾つか抜かれると書いてあってひよりました

データ量多いのと(細かく見れる)、実行状況を文章で説明してくれるのがたすかります(英語なのでEdgeで選択範囲を翻訳)
これ見ちゃうと、無料で利用可能な他のサイトがシンプルに見えます

image.png
image.png

サンプルサイトこちらです:

あちこちさわると色々反応があります(詳細が表示される)

Explain PostgreSQL(explain-postgresql.com)

同じようにSQLと実行計画を投入します

image.png

バーで時間のかかってる演算子が分かりやすいです(ブラウザのデベロッパーツールのtimelineっぽいと思いました)
元々の実行計画ベースなとことか出力項目的に、explain.depesz.comに使用感は近いと思いました。色がポップでこちらの方がフレンドリーな感じはあります。まず実行時間/行数の大きいものから見ていくときには使いやすそうです。

image.png

各ノードをクリックすると詳細が表示されます。

image.png

演算子が赤字でリンクになっていて、クリックするとそのノードの解説動画(youtube)に遷移しました。外国語のため理解できませんが、ユーザーフレンドリーな精神は伝わってきます

image.png

diagramタブをクリックするとアイコンで表示されます。アイコンをカーソルオーバーすると詳細が表示され、クリックするとexplainタブの該当のノードに遷移します。

image.png

relationsタブはローディングのまま数分待っても表示されませんでした。外部制約のリレーション図を表示してくれるのではと思います

wiki.postgresql.orgに紹介されていたものは以上で、それ以外に見かけたものを載せていきます

Postgres Explain Visualizer

pev(tatiyants.com/pev/)と同名だけど関係性は不明
https://www.pgexplain.dev/

image.png

使用感や内容はシンプルです
pev2(explain.dalibo.com)と雰囲気感近いですが、次にのせてるpev(tatiyants.com/pev/)やpev2(explain.dalibo.com)より項目が少ないのと、マウスでのズームやドラッグ&ドロップに対応してません。

image.png

私の投入した実行計画はこちらで試せます: https://www.pgexplain.dev/plan/08266476-636c-48b4-9ade-517eee766f3b#plan

pev(tatiyants.com/pev/)

オープンソースのPostgres EXPLAIN Visualizer(https://github.com/AlexTatiyants/pev )のWEBホスティングです

厳密なjsonでないと受け付けないため、以下コマンドで出力したものを利用しました
(ここまでは、余計なヘッダーや+が含まれたものでも動いてたので気にしてませんでした)

psql -h localhost -d qiita -U qiita -qAt -f explain.sql > analyze.json

image.png

見た目まあまあ良いなあと思います
一番時間がかかってる部分はslowest, 取得レコード数が多い部分はlargesetなど表示されていて見やすいです

image.png

ノードをクリックすると、詳細なデータががっと表示され、強力に思いました

image.png

情報量多いし見やすい。良いかもです。

こちらのサイトは、私の投入した実行計画をURL共有できませんでした

dbForge Studio for PostgreSQL

有償ですが、express editionは無料利用可能です(機能一覧表上で、express edtionでも色々な機能に対応してました)

業務アプリっぽいUIだと思いました。サンプル画面でなんとなく雰囲気掴めたので試してません。

image.png

image.png

gocmdpev

こちらのサイトで紹介されていました: https://wonderwall.hatenablog.com/entry/2017/09/13/220000
CUIベースです。

image.png

その他

pevの派生の流れが面白いです

15
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
4