plprofiler

plprofiler

plprofiler : server-side support for profiling PL/pgSQL functions

Overview

IDExtensionPackageVersionCategoryLicenseLanguage
3070
plprofiler
plprofiler
4.2.5
LANG
Artistic
C
AttributeHas BinaryHas LibraryNeed LoadHas DDLRelocatableTrusted
--sLd-r
No
Yes
Yes
Yes
yes
no
Relationships
See Also
pldbgapi
plpgsql_check
plpgsql
pgtap
pg_profile
pg_stat_statements
pg_store_plans
auto_explain

Packages

TypeRepoVersionPG Major CompatibilityPackage PatternDependencies
EXT
PGDG
4.2.5
18
17
16
15
14
plprofiler-
RPM
PGDG
4.2.5
18
17
16
15
14
plprofiler_$v-
DEB
PGDG
4.2.5
18
17
16
15
14
postgresql-$v-plprofiler-
Linux / PGPG18PG17PG16PG15PG14
el8.x86_64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
el8.aarch64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
el9.x86_64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
el9.aarch64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
el10.x86_64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
el10.aarch64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
d12.x86_64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
d12.aarch64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
d13.x86_64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
d13.aarch64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
u22.x86_64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
u22.aarch64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
u24.x86_64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
u24.aarch64
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PGDG 4.2.5
PackageVersionOSORGSIZEFile URL
plprofiler_184.2.5el8.x86_64pgdg7.5 KiBplprofiler_18-4.2.5-5PGDG.rhel8.10.x86_64.rpm
plprofiler_184.2.5el8.aarch64pgdg7.5 KiBplprofiler_18-4.2.5-5PGDG.rhel8.10.aarch64.rpm
plprofiler_184.2.5el9.x86_64pgdg6.9 KiBplprofiler_18-4.2.5-5PGDG.rhel9.7.x86_64.rpm
plprofiler_184.2.5el9.x86_64pgdg6.7 KiBplprofiler_18-4.2.5-2PGDG.rhel9.x86_64.rpm
plprofiler_184.2.5el9.aarch64pgdg6.9 KiBplprofiler_18-4.2.5-5PGDG.rhel9.7.aarch64.rpm
plprofiler_184.2.5el9.aarch64pgdg6.7 KiBplprofiler_18-4.2.5-2PGDG.rhel9.aarch64.rpm
plprofiler_184.2.5el10.x86_64pgdg7.1 KiBplprofiler_18-4.2.5-5PGDG.rhel10.1.x86_64.rpm
plprofiler_184.2.5el10.x86_64pgdg7.3 KiBplprofiler_18-4.2.5-2PGDG.rhel10.x86_64.rpm
plprofiler_184.2.5el10.aarch64pgdg7.0 KiBplprofiler_18-4.2.5-5PGDG.rhel10.1.aarch64.rpm
plprofiler_184.2.5el10.aarch64pgdg7.2 KiBplprofiler_18-4.2.5-2PGDG.rhel10.aarch64.rpm
postgresql-18-plprofiler4.2.5d12.x86_64pgdg45.3 KiBpostgresql-18-plprofiler_4.2.5-4.pgdg12+1_amd64.deb
postgresql-18-plprofiler4.2.5d12.aarch64pgdg44.5 KiBpostgresql-18-plprofiler_4.2.5-4.pgdg12+1_arm64.deb
postgresql-18-plprofiler4.2.5d13.x86_64pgdg45.3 KiBpostgresql-18-plprofiler_4.2.5-4.pgdg13+1_amd64.deb
postgresql-18-plprofiler4.2.5d13.aarch64pgdg44.5 KiBpostgresql-18-plprofiler_4.2.5-4.pgdg13+1_arm64.deb
postgresql-18-plprofiler4.2.5u22.x86_64pgdg46.2 KiBpostgresql-18-plprofiler_4.2.5-4.pgdg22.04+1_amd64.deb
postgresql-18-plprofiler4.2.5u22.aarch64pgdg45.4 KiBpostgresql-18-plprofiler_4.2.5-4.pgdg22.04+1_arm64.deb
postgresql-18-plprofiler4.2.5u24.x86_64pgdg45.3 KiBpostgresql-18-plprofiler_4.2.5-4.pgdg24.04+1_amd64.deb
postgresql-18-plprofiler4.2.5u24.aarch64pgdg44.4 KiBpostgresql-18-plprofiler_4.2.5-4.pgdg24.04+1_arm64.deb
PackageVersionOSORGSIZEFile URL
plprofiler_174.2.5el8.x86_64pgdg7.5 KiBplprofiler_17-4.2.5-5PGDG.rhel8.10.x86_64.rpm
plprofiler_174.2.5el8.x86_64pgdg7.0 KiBplprofiler_17-4.2.5-1PGDG.rhel8.x86_64.rpm
plprofiler_174.2.5el8.aarch64pgdg7.5 KiBplprofiler_17-4.2.5-5PGDG.rhel8.10.aarch64.rpm
plprofiler_174.2.5el8.aarch64pgdg7.0 KiBplprofiler_17-4.2.5-1PGDG.rhel8.aarch64.rpm
plprofiler_174.2.5el9.x86_64pgdg6.9 KiBplprofiler_17-4.2.5-5PGDG.rhel9.7.x86_64.rpm
plprofiler_174.2.5el9.x86_64pgdg7.1 KiBplprofiler_17-4.2.5-1PGDG.rhel9.x86_64.rpm
plprofiler_174.2.5el9.aarch64pgdg6.9 KiBplprofiler_17-4.2.5-5PGDG.rhel9.7.aarch64.rpm
plprofiler_174.2.5el9.aarch64pgdg7.0 KiBplprofiler_17-4.2.5-1PGDG.rhel9.aarch64.rpm
plprofiler_174.2.5el10.x86_64pgdg7.1 KiBplprofiler_17-4.2.5-5PGDG.rhel10.1.x86_64.rpm
plprofiler_174.2.5el10.x86_64pgdg7.3 KiBplprofiler_17-4.2.5-2PGDG.rhel10.x86_64.rpm
plprofiler_174.2.5el10.aarch64pgdg7.0 KiBplprofiler_17-4.2.5-5PGDG.rhel10.1.aarch64.rpm
postgresql-17-plprofiler4.2.5d12.x86_64pgdg45.2 KiBpostgresql-17-plprofiler_4.2.5-4.pgdg12+1_amd64.deb
postgresql-17-plprofiler4.2.5d12.aarch64pgdg44.4 KiBpostgresql-17-plprofiler_4.2.5-4.pgdg12+1_arm64.deb
postgresql-17-plprofiler4.2.5d13.x86_64pgdg45.2 KiBpostgresql-17-plprofiler_4.2.5-4.pgdg13+1_amd64.deb
postgresql-17-plprofiler4.2.5d13.aarch64pgdg44.5 KiBpostgresql-17-plprofiler_4.2.5-4.pgdg13+1_arm64.deb
postgresql-17-plprofiler4.2.5u22.x86_64pgdg52.1 KiBpostgresql-17-plprofiler_4.2.5-4.pgdg22.04+1_amd64.deb
postgresql-17-plprofiler4.2.5u22.aarch64pgdg51.2 KiBpostgresql-17-plprofiler_4.2.5-4.pgdg22.04+1_arm64.deb
postgresql-17-plprofiler4.2.5u24.x86_64pgdg45.4 KiBpostgresql-17-plprofiler_4.2.5-4.pgdg24.04+1_amd64.deb
postgresql-17-plprofiler4.2.5u24.aarch64pgdg44.6 KiBpostgresql-17-plprofiler_4.2.5-4.pgdg24.04+1_arm64.deb
PackageVersionOSORGSIZEFile URL
plprofiler_164.2.5el8.x86_64pgdg7.5 KiBplprofiler_16-4.2.5-5PGDG.rhel8.10.x86_64.rpm
plprofiler_164.2.4el8.x86_64pgdg6.8 KiBplprofiler_16-4.2.4-1PGDG.rhel8.x86_64.rpm
plprofiler_164.2.5el8.aarch64pgdg7.5 KiBplprofiler_16-4.2.5-5PGDG.rhel8.10.aarch64.rpm
plprofiler_164.2.4el8.aarch64pgdg6.8 KiBplprofiler_16-4.2.4-1PGDG.rhel8.aarch64.rpm
plprofiler_164.2.5el9.x86_64pgdg6.9 KiBplprofiler_16-4.2.5-5PGDG.rhel9.7.x86_64.rpm
plprofiler_164.2.4el9.x86_64pgdg6.9 KiBplprofiler_16-4.2.4-1PGDG.rhel9.x86_64.rpm
plprofiler_164.2.5el9.aarch64pgdg6.9 KiBplprofiler_16-4.2.5-5PGDG.rhel9.7.aarch64.rpm
plprofiler_164.2.4el9.aarch64pgdg6.7 KiBplprofiler_16-4.2.4-1PGDG.rhel9.aarch64.rpm
plprofiler_164.2.5el10.x86_64pgdg7.1 KiBplprofiler_16-4.2.5-5PGDG.rhel10.1.x86_64.rpm
plprofiler_164.2.5el10.x86_64pgdg7.3 KiBplprofiler_16-4.2.5-2PGDG.rhel10.x86_64.rpm
plprofiler_164.2.5el10.aarch64pgdg7.0 KiBplprofiler_16-4.2.5-5PGDG.rhel10.1.aarch64.rpm
postgresql-16-plprofiler4.2.5d12.x86_64pgdg45.3 KiBpostgresql-16-plprofiler_4.2.5-4.pgdg12+1_amd64.deb
postgresql-16-plprofiler4.2.5d12.aarch64pgdg44.4 KiBpostgresql-16-plprofiler_4.2.5-4.pgdg12+1_arm64.deb
postgresql-16-plprofiler4.2.5d13.x86_64pgdg45.2 KiBpostgresql-16-plprofiler_4.2.5-4.pgdg13+1_amd64.deb
postgresql-16-plprofiler4.2.5d13.aarch64pgdg44.5 KiBpostgresql-16-plprofiler_4.2.5-4.pgdg13+1_arm64.deb
postgresql-16-plprofiler4.2.5u22.x86_64pgdg52.1 KiBpostgresql-16-plprofiler_4.2.5-4.pgdg22.04+1_amd64.deb
postgresql-16-plprofiler4.2.5u22.aarch64pgdg51.1 KiBpostgresql-16-plprofiler_4.2.5-4.pgdg22.04+1_arm64.deb
postgresql-16-plprofiler4.2.5u24.x86_64pgdg45.4 KiBpostgresql-16-plprofiler_4.2.5-4.pgdg24.04+1_amd64.deb
postgresql-16-plprofiler4.2.5u24.aarch64pgdg44.5 KiBpostgresql-16-plprofiler_4.2.5-4.pgdg24.04+1_arm64.deb
PackageVersionOSORGSIZEFile URL
plprofiler_154.2.5el8.x86_64pgdg7.5 KiBplprofiler_15-4.2.5-5PGDG.rhel8.10.x86_64.rpm
plprofiler_154.2.2el8.x86_64pgdg6.8 KiBplprofiler_15-4.2.2-1PGDG.rhel8.x86_64.rpm
plprofiler_154.2.1el8.x86_64pgdg6.6 KiBplprofiler_15-4.2.1-1.rhel8.x86_64.rpm
plprofiler_154.2el8.x86_64pgdg6.4 KiBplprofiler_15-4.2-1.rhel8.x86_64.rpm
plprofiler_154.2.5el8.aarch64pgdg7.5 KiBplprofiler_15-4.2.5-5PGDG.rhel8.10.aarch64.rpm
plprofiler_154.2.2el8.aarch64pgdg6.7 KiBplprofiler_15-4.2.2-1PGDG.rhel8.aarch64.rpm
plprofiler_154.2.1el8.aarch64pgdg6.5 KiBplprofiler_15-4.2.1-1.rhel8.aarch64.rpm
plprofiler_154.2el8.aarch64pgdg6.4 KiBplprofiler_15-4.2-1.rhel8.aarch64.rpm
plprofiler_154.2.5el9.x86_64pgdg6.9 KiBplprofiler_15-4.2.5-5PGDG.rhel9.7.x86_64.rpm
plprofiler_154.2.2el9.x86_64pgdg6.8 KiBplprofiler_15-4.2.2-1PGDG.rhel9.x86_64.rpm
plprofiler_154.2.1el9.x86_64pgdg6.6 KiBplprofiler_15-4.2.1-1.rhel9.x86_64.rpm
plprofiler_154.2el9.x86_64pgdg6.5 KiBplprofiler_15-4.2-1.rhel9.x86_64.rpm
plprofiler_154.2.5el9.aarch64pgdg6.9 KiBplprofiler_15-4.2.5-5PGDG.rhel9.7.aarch64.rpm
plprofiler_154.2.2el9.aarch64pgdg6.7 KiBplprofiler_15-4.2.2-1PGDG.rhel9.aarch64.rpm
plprofiler_154.2.1el9.aarch64pgdg6.5 KiBplprofiler_15-4.2.1-1.rhel9.aarch64.rpm
plprofiler_154.2el9.aarch64pgdg6.3 KiBplprofiler_15-4.2-1.rhel9.aarch64.rpm
plprofiler_154.2.5el10.x86_64pgdg7.1 KiBplprofiler_15-4.2.5-5PGDG.rhel10.1.x86_64.rpm
plprofiler_154.2.5el10.x86_64pgdg7.3 KiBplprofiler_15-4.2.5-2PGDG.rhel10.x86_64.rpm
plprofiler_154.2.5el10.aarch64pgdg7.0 KiBplprofiler_15-4.2.5-5PGDG.rhel10.1.aarch64.rpm
postgresql-15-plprofiler4.2.5d12.x86_64pgdg45.5 KiBpostgresql-15-plprofiler_4.2.5-4.pgdg12+1_amd64.deb
postgresql-15-plprofiler4.2.5d12.aarch64pgdg44.5 KiBpostgresql-15-plprofiler_4.2.5-4.pgdg12+1_arm64.deb
postgresql-15-plprofiler4.2.5d13.x86_64pgdg45.5 KiBpostgresql-15-plprofiler_4.2.5-4.pgdg13+1_amd64.deb
postgresql-15-plprofiler4.2.5d13.aarch64pgdg44.7 KiBpostgresql-15-plprofiler_4.2.5-4.pgdg13+1_arm64.deb
postgresql-15-plprofiler4.2.5u22.x86_64pgdg52.3 KiBpostgresql-15-plprofiler_4.2.5-4.pgdg22.04+1_amd64.deb
postgresql-15-plprofiler4.2.5u22.aarch64pgdg51.3 KiBpostgresql-15-plprofiler_4.2.5-4.pgdg22.04+1_arm64.deb
postgresql-15-plprofiler4.2.5u24.x86_64pgdg45.6 KiBpostgresql-15-plprofiler_4.2.5-4.pgdg24.04+1_amd64.deb
postgresql-15-plprofiler4.2.5u24.aarch64pgdg44.7 KiBpostgresql-15-plprofiler_4.2.5-4.pgdg24.04+1_arm64.deb
PackageVersionOSORGSIZEFile URL
plprofiler_144.2.5el8.x86_64pgdg7.5 KiBplprofiler_14-4.2.5-5PGDG.rhel8.10.x86_64.rpm
plprofiler_144.2.2el8.x86_64pgdg6.8 KiBplprofiler_14-4.2.2-1PGDG.rhel8.x86_64.rpm
plprofiler_144.2.1el8.x86_64pgdg6.6 KiBplprofiler_14-4.2.1-1.rhel8.x86_64.rpm
plprofiler_144.2el8.x86_64pgdg6.4 KiBplprofiler_14-4.2-1.rhel8.x86_64.rpm
plprofiler_144.2.5el8.aarch64pgdg7.5 KiBplprofiler_14-4.2.5-5PGDG.rhel8.10.aarch64.rpm
plprofiler_144.2.2el8.aarch64pgdg6.7 KiBplprofiler_14-4.2.2-1PGDG.rhel8.aarch64.rpm
plprofiler_144.2.1el8.aarch64pgdg6.5 KiBplprofiler_14-4.2.1-1.rhel8.aarch64.rpm
plprofiler_144.2el8.aarch64pgdg6.4 KiBplprofiler_14-4.2-1.rhel8.aarch64.rpm
plprofiler_144.2.5el9.x86_64pgdg6.9 KiBplprofiler_14-4.2.5-5PGDG.rhel9.7.x86_64.rpm
plprofiler_144.2.2el9.x86_64pgdg6.8 KiBplprofiler_14-4.2.2-1PGDG.rhel9.x86_64.rpm
plprofiler_144.2.1el9.x86_64pgdg6.6 KiBplprofiler_14-4.2.1-1.rhel9.x86_64.rpm
plprofiler_144.2el9.x86_64pgdg6.5 KiBplprofiler_14-4.2-1.rhel9.x86_64.rpm
plprofiler_144.2.5el9.aarch64pgdg6.9 KiBplprofiler_14-4.2.5-5PGDG.rhel9.7.aarch64.rpm
plprofiler_144.2.2el9.aarch64pgdg6.7 KiBplprofiler_14-4.2.2-1PGDG.rhel9.aarch64.rpm
plprofiler_144.2.1el9.aarch64pgdg6.5 KiBplprofiler_14-4.2.1-1.rhel9.aarch64.rpm
plprofiler_144.2el9.aarch64pgdg6.3 KiBplprofiler_14-4.2-1.rhel9.aarch64.rpm
plprofiler_144.2.5el10.x86_64pgdg7.1 KiBplprofiler_14-4.2.5-5PGDG.rhel10.1.x86_64.rpm
plprofiler_144.2.5el10.x86_64pgdg7.3 KiBplprofiler_14-4.2.5-2PGDG.rhel10.x86_64.rpm
plprofiler_144.2.5el10.aarch64pgdg7.0 KiBplprofiler_14-4.2.5-5PGDG.rhel10.1.aarch64.rpm
postgresql-14-plprofiler4.2.5d12.x86_64pgdg45.2 KiBpostgresql-14-plprofiler_4.2.5-4.pgdg12+1_amd64.deb
postgresql-14-plprofiler4.2.5d12.aarch64pgdg44.2 KiBpostgresql-14-plprofiler_4.2.5-4.pgdg12+1_arm64.deb
postgresql-14-plprofiler4.2.5d13.x86_64pgdg45.3 KiBpostgresql-14-plprofiler_4.2.5-4.pgdg13+1_amd64.deb
postgresql-14-plprofiler4.2.5d13.aarch64pgdg44.3 KiBpostgresql-14-plprofiler_4.2.5-4.pgdg13+1_arm64.deb
postgresql-14-plprofiler4.2.5u22.x86_64pgdg50.4 KiBpostgresql-14-plprofiler_4.2.5-4.pgdg22.04+1_amd64.deb
postgresql-14-plprofiler4.2.5u22.aarch64pgdg49.4 KiBpostgresql-14-plprofiler_4.2.5-4.pgdg22.04+1_arm64.deb
postgresql-14-plprofiler4.2.5u24.x86_64pgdg45.4 KiBpostgresql-14-plprofiler_4.2.5-4.pgdg24.04+1_amd64.deb
postgresql-14-plprofiler4.2.5u24.aarch64pgdg44.3 KiBpostgresql-14-plprofiler_4.2.5-4.pgdg24.04+1_arm64.deb

Source

Install

Make sure PGDG repo available:

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

Install this extension with pig:

pig install plprofiler;		# install via package name, for the active PG version

pig install plprofiler -v 18;   # install for PG 18
pig install plprofiler -v 17;   # install for PG 17
pig install plprofiler -v 16;   # install for PG 16
pig install plprofiler -v 15;   # install for PG 15
pig install plprofiler -v 14;   # install for PG 14

Config this extension to shared_preload_libraries:

shared_preload_libraries = 'plprofiler';

Create this extension with:

CREATE EXTENSION plprofiler;

Usage

plprofiler: server-side support for profiling PL/pgSQL functions

plprofiler is a profiling tool for PL/pgSQL functions that identifies performance bottlenecks and generates interactive flame graph reports.

CREATE EXTENSION plprofiler;

Configuration

Add to postgresql.conf:

shared_preload_libraries = 'plprofiler'

Command-Line Tool

The plprofiler command-line utility controls profiling and generates reports:

# Profile a specific SQL command
plprofiler run -d mydb --command "SELECT my_function()" --output report.html

# Monitor profiling in real-time
plprofiler monitor -d mydb

# Save profiling data for later analysis
plprofiler save -d mydb --name "my_profile"

# Generate HTML report with flame graphs
plprofiler report -d mydb --from-data "my_profile" --output report.html

# List saved profiling datasets
plprofiler list -d mydb

# Reset profiling data
plprofiler reset-data -d mydb

# Export/import profiling data
plprofiler export -d mydb --from-data "my_profile" > profile.json
plprofiler import -d mydb --into-data "imported" < profile.json

SQL Interface

-- Enable profiling for the current session
SELECT pl_profiler_set_enabled_local(true);

-- Execute functions to be profiled
SELECT my_function();

-- Collect profiling data into shared hash tables
SELECT pl_profiler_collect_data();

-- Disable profiling
SELECT pl_profiler_set_enabled_local(false);

-- Enable profiling globally (for all sessions)
SELECT pl_profiler_set_enabled_global(true);

-- Reset local/shared profiling data
SELECT pl_profiler_reset_local();
SELECT pl_profiler_reset_shared();

Report Output

Generated HTML reports include:

  • Interactive flame graphs showing wall-clock time spent in PL/pgSQL code
  • Per-function statistics with self-time (total minus children)
  • Top functions ranked by time consumption (default: top 10)
  • Self-contained HTML requiring no external dependencies

Profiling Methods

  • Direct profiling: Run specific SQL while collecting data
  • Timed collection: Interval-based statistics gathering
  • Per-user profiling: Enable profiling for specific database users via ALTER USER
  • Production monitoring: Low-overhead profiling on live systems
Last updated on