pg_show_plans

show query plans of all currently running SQL statements

Overview

PackageVersionCategoryLicenseLanguage
pg_show_plans2.1.7STATPostgreSQLC
IDExtensionBinLibLoadCreateTrustRelocSchema
6210pg_show_plansNoYesNoYesNoYes-
Relatedpg_store_plans explain_ui auto_explain pg_stat_statements pg_hint_plan pg_stat_monitor pg_qualstats pre_prepare

Version

TypeRepoVersionPG VerPackageDeps
EXTPGDG2.1.71817161514pg_show_plans-
RPMPGDG2.1.61817161514pg_show_plans_$v-
DEBPGDG2.1.71817161514postgresql-$v-show-plans-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
d12.aarch64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
d13.x86_64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
d13.aarch64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
u22.x86_64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
u22.aarch64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
u24.x86_64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
u24.aarch64
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7
PGDG 2.1.7

Install

You can install pg_show_plans directly. First, make sure the PGDG repository is added and enabled:

pig repo add pgdg -u          # Add PGDG repo and update cache

Install the extension using pig or apt/yum/dnf:

pig install pg_show_plans;          # Install for current active PG version
pig ext install -y pg_show_plans -v 18  # PG 18
pig ext install -y pg_show_plans -v 17  # PG 17
pig ext install -y pg_show_plans -v 16  # PG 16
pig ext install -y pg_show_plans -v 15  # PG 15
pig ext install -y pg_show_plans -v 14  # PG 14
dnf install -y pg_show_plans_18       # PG 18
dnf install -y pg_show_plans_17       # PG 17
dnf install -y pg_show_plans_16       # PG 16
dnf install -y pg_show_plans_15       # PG 15
dnf install -y pg_show_plans_14       # PG 14
apt install -y postgresql-18-show-plans   # PG 18
apt install -y postgresql-17-show-plans   # PG 17
apt install -y postgresql-16-show-plans   # PG 16
apt install -y postgresql-15-show-plans   # PG 15
apt install -y postgresql-14-show-plans   # PG 14

Create Extension:

CREATE EXTENSION pg_show_plans;

Usage

pg_show_plans: show query plans of running SQL statements

pg_show_plans displays the execution plans of all currently running SQL statements in real time. Plans are stored in a shared memory hash table.

Viewing Running Plans

-- Show plans of all currently running queries
SELECT * FROM pg_show_plans;

-- Show plans along with their query text
SELECT * FROM pg_show_plans_q;

The views return:

ColumnTypeDescription
pidintegerServer process ID
levelintegerQuery nest level (0 = top level)
useridoidUser OID
dbidoidDatabase OID
plantextQuery plan text
querytextQuery string (only in pg_show_plans_q)

Nested Queries

When a function invokes SQL statements, they appear at deeper nesting levels:

SELECT * FROM pg_show_plans;
  pid  | level | userid | dbid  |                       plan
-------+-------+--------+-------+-----------------------------------------------
 11504 |     0 |     10 | 16384 | Function Scan on print_item  (cost=...)
 11504 |     1 |     10 | 16384 | Result  (cost=0.00..0.01 rows=1 width=4)

GUC Parameters

ParameterDefaultDescription
pg_show_plans.plan_formattextOutput format: text, json, yaml, xml
pg_show_plans.max_plan_length16384Max plan length in bytes (affects shared memory)
pg_show_plans.is_enabledtrueEnable or disable the extension at runtime

Last Modified 2026-03-12: add pg extension catalog (95749bf)