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 は文を実際に実行します。INSERT・UPDATE・DELETE は BEGIN と ROLLBACK で囲んでください。

実行計画

有効な実行計画を貼り付けると、ここにプランツリーが表示されます。

EXPLAIN の結果を待っています。

表示される内容

PostgreSQL EXPLAIN Visualizer は EXPLAIN (FORMAT JSON) の出力を、折りたためるプランツリー、並べ替え可能なノード表、整形した元の JSON に変換します。概要には実行時間と計画時間、ノード数、最も遅いノード、最大の行数見積もり誤差、共有バッファ外から読み取ったブロック数を表示します。任意のノードを選ぶと PostgreSQL が報告した全項目を確認できます。

実行計画の取得方法

EXPLAIN (ANALYZE, BUFFERS, SETTINGS, WAL, VERBOSE, FORMAT JSON) に続けてクエリを実行し、結果を貼り付けます。QUERY PLAN 見出し、+ の継続記号、行数のフッターを含む psql 出力は自動で整えます。ANALYZE は文を実行するため、INSERT・UPDATE・DELETE は BEGIN と ROLLBACK で囲んでください。ANALYZE なしの計画でもコストと見積もりは表示されますが、時間に基づく指摘は省略されます。

指標の算出方法

合計時間は 1 ループあたりの実時間 × ループ数です。Gather ノードの下ではプロセス数で割り、並列処理を重複して数えないようにします。自身の時間は子ノードの合計時間を差し引き、0 未満にはしないため、並列プラン・CTE・InitPlan・SubPlan では概算になります。見積もり係数は 1 ループあたりの実際の行数と見積もり行数を比較します。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