MAGAZINE
ルーターマガジン
実行計画が一目瞭然!PostgreSQLクエリチューニングのオススメツール pev2(Postgres Explain Visualizer 2)
pev2の概要
pev2(Postgres Explain Visualizer 2)は、Dalibo社が開発したオープンソースツールで、GitHubリポジトリから入手可能です。
見づらいPostgreSQLのEXPLAIN (ANALYZE, JSON)出力をツリー形式で視覚化します。Web版もありますが、オフライン利用できる、単一のHTMLファイルも配布されているため、インターネット接続不要でデータを安全に扱えます。
オフライン実行の手順
pev2のオフライン実行は、Dockerや追加ソフトウェアのインストールが一切不要で簡単につかえます。まずGitHubからpev2.htmlファイルをダウンロードします。次に、psqlで対象クエリを実行し、EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS, FORMAT JSON)オプションを付けてJSON形式の出力を取得します。このJSONをコピーし、ブラウザで開いたpev2.htmlの入力エリアに貼り付け、submitを押します。すると以下のように処理がツリーマップ状に表示されどこが遅いかがすぐにわかります。

実行計画の見やすさ向上
従来のPostgreSQL EXPLAIN出力はテキストベースで階層構造が深く、インデックススキャン、シーケンシャルスキャン、JOIN、ソートなどのノードが混在すると全体像を把握しにくく、計算量の多いボトルネック(高コストノード)を特定するのに時間かかっていました。pev2ではこれをSVGベースのインタラクティブグラフに変換し、各ノードを色分けで表示します。例えば、実行時間(time)が長いノードを赤系で強調し、行数(rows)やコスト(cost)、バッファ使用量(buffers)を数値付きで視覚化するため、問題箇所が一目瞭然です。これにより、パフォーマンスチューニングのスピードが向上します。
クエリとEXPLAINの共有効率化
クエリとEXPLAIN結果の共有作業は、弊社では従来スプレッドシートなどで行っていましたが、pev2ではクエリと実行計画を名前を付けて保存でき、エクスポートすることで、受信側もpev2.htmlさえあればローカルで閲覧することが可能です。
詳細分析機能
pev2のノードをクリックすれば、バッファヒット率(shared hit/blkやread/blk)、実際の実行時間と計画時間のズレ、ループごとの時間分布までドリルダウン表示されます。 例えばSeq Scanノードでヒット率が低い時はインデックスを貼ってみようなど、つぎの検証がスムーズにできます。 この視覚化のおかげで、テキストのEXPLAINとにらめっこするより断然速くチューニング案が出せます。
最後に
pev2は実行計画の見やすさと共有の手軽さでPostgreSQLチューニングを効率化してくれます。オフラインでサクッと使えるので、ぜひ使ってみてください。
CONTACT
お問い合わせ・ご依頼はこちらから