plprofiler

plprofiler

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

Overview

ID Extension Package Version Category License Language
3070
plprofiler
plprofiler
4.2.5
LANG
Artistic
C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--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

Type Repo Version PG Major Compatibility Package Pattern Dependencies
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 / PG PG18 PG17 PG16 PG15 PG14
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
Package Version OS ORG SIZE File URL
plprofiler_18 4.2.5 el8.x86_64 pgdg 7.5 KiB plprofiler_18-4.2.5-5PGDG.rhel8.10.x86_64.rpm
plprofiler_18 4.2.5 el8.aarch64 pgdg 7.5 KiB plprofiler_18-4.2.5-5PGDG.rhel8.10.aarch64.rpm
plprofiler_18 4.2.5 el9.x86_64 pgdg 6.9 KiB plprofiler_18-4.2.5-5PGDG.rhel9.7.x86_64.rpm
plprofiler_18 4.2.5 el9.x86_64 pgdg 6.7 KiB plprofiler_18-4.2.5-2PGDG.rhel9.x86_64.rpm
plprofiler_18 4.2.5 el9.aarch64 pgdg 6.9 KiB plprofiler_18-4.2.5-5PGDG.rhel9.7.aarch64.rpm
plprofiler_18 4.2.5 el9.aarch64 pgdg 6.7 KiB plprofiler_18-4.2.5-2PGDG.rhel9.aarch64.rpm
plprofiler_18 4.2.5 el10.x86_64 pgdg 7.1 KiB plprofiler_18-4.2.5-5PGDG.rhel10.1.x86_64.rpm
plprofiler_18 4.2.5 el10.x86_64 pgdg 7.3 KiB plprofiler_18-4.2.5-2PGDG.rhel10.x86_64.rpm
plprofiler_18 4.2.5 el10.aarch64 pgdg 7.0 KiB plprofiler_18-4.2.5-5PGDG.rhel10.1.aarch64.rpm
plprofiler_18 4.2.5 el10.aarch64 pgdg 7.2 KiB plprofiler_18-4.2.5-2PGDG.rhel10.aarch64.rpm
postgresql-18-plprofiler 4.2.5 d12.x86_64 pgdg 45.3 KiB postgresql-18-plprofiler_4.2.5-4.pgdg12+1_amd64.deb
postgresql-18-plprofiler 4.2.5 d12.aarch64 pgdg 44.5 KiB postgresql-18-plprofiler_4.2.5-4.pgdg12+1_arm64.deb
postgresql-18-plprofiler 4.2.5 d13.x86_64 pgdg 45.3 KiB postgresql-18-plprofiler_4.2.5-4.pgdg13+1_amd64.deb
postgresql-18-plprofiler 4.2.5 d13.aarch64 pgdg 44.5 KiB postgresql-18-plprofiler_4.2.5-4.pgdg13+1_arm64.deb
postgresql-18-plprofiler 4.2.5 u22.x86_64 pgdg 46.2 KiB postgresql-18-plprofiler_4.2.5-4.pgdg22.04+1_amd64.deb
postgresql-18-plprofiler 4.2.5 u22.aarch64 pgdg 45.4 KiB postgresql-18-plprofiler_4.2.5-4.pgdg22.04+1_arm64.deb
postgresql-18-plprofiler 4.2.5 u24.x86_64 pgdg 45.3 KiB postgresql-18-plprofiler_4.2.5-4.pgdg24.04+1_amd64.deb
postgresql-18-plprofiler 4.2.5 u24.aarch64 pgdg 44.4 KiB postgresql-18-plprofiler_4.2.5-4.pgdg24.04+1_arm64.deb
Package Version OS ORG SIZE File URL
plprofiler_17 4.2.5 el8.x86_64 pgdg 7.5 KiB plprofiler_17-4.2.5-5PGDG.rhel8.10.x86_64.rpm
plprofiler_17 4.2.5 el8.x86_64 pgdg 7.0 KiB plprofiler_17-4.2.5-1PGDG.rhel8.x86_64.rpm
plprofiler_17 4.2.5 el8.aarch64 pgdg 7.5 KiB plprofiler_17-4.2.5-5PGDG.rhel8.10.aarch64.rpm
plprofiler_17 4.2.5 el8.aarch64 pgdg 7.0 KiB plprofiler_17-4.2.5-1PGDG.rhel8.aarch64.rpm
plprofiler_17 4.2.5 el9.x86_64 pgdg 6.9 KiB plprofiler_17-4.2.5-5PGDG.rhel9.7.x86_64.rpm
plprofiler_17 4.2.5 el9.x86_64 pgdg 7.1 KiB plprofiler_17-4.2.5-1PGDG.rhel9.x86_64.rpm
plprofiler_17 4.2.5 el9.aarch64 pgdg 6.9 KiB plprofiler_17-4.2.5-5PGDG.rhel9.7.aarch64.rpm
plprofiler_17 4.2.5 el9.aarch64 pgdg 7.0 KiB plprofiler_17-4.2.5-1PGDG.rhel9.aarch64.rpm
plprofiler_17 4.2.5 el10.x86_64 pgdg 7.1 KiB plprofiler_17-4.2.5-5PGDG.rhel10.1.x86_64.rpm
plprofiler_17 4.2.5 el10.x86_64 pgdg 7.3 KiB plprofiler_17-4.2.5-2PGDG.rhel10.x86_64.rpm
plprofiler_17 4.2.5 el10.aarch64 pgdg 7.0 KiB plprofiler_17-4.2.5-5PGDG.rhel10.1.aarch64.rpm
postgresql-17-plprofiler 4.2.5 d12.x86_64 pgdg 45.2 KiB postgresql-17-plprofiler_4.2.5-4.pgdg12+1_amd64.deb
postgresql-17-plprofiler 4.2.5 d12.aarch64 pgdg 44.4 KiB postgresql-17-plprofiler_4.2.5-4.pgdg12+1_arm64.deb
postgresql-17-plprofiler 4.2.5 d13.x86_64 pgdg 45.2 KiB postgresql-17-plprofiler_4.2.5-4.pgdg13+1_amd64.deb
postgresql-17-plprofiler 4.2.5 d13.aarch64 pgdg 44.5 KiB postgresql-17-plprofiler_4.2.5-4.pgdg13+1_arm64.deb
postgresql-17-plprofiler 4.2.5 u22.x86_64 pgdg 52.1 KiB postgresql-17-plprofiler_4.2.5-4.pgdg22.04+1_amd64.deb
postgresql-17-plprofiler 4.2.5 u22.aarch64 pgdg 51.2 KiB postgresql-17-plprofiler_4.2.5-4.pgdg22.04+1_arm64.deb
postgresql-17-plprofiler 4.2.5 u24.x86_64 pgdg 45.4 KiB postgresql-17-plprofiler_4.2.5-4.pgdg24.04+1_amd64.deb
postgresql-17-plprofiler 4.2.5 u24.aarch64 pgdg 44.6 KiB postgresql-17-plprofiler_4.2.5-4.pgdg24.04+1_arm64.deb
Package Version OS ORG SIZE File URL
plprofiler_16 4.2.5 el8.x86_64 pgdg 7.5 KiB plprofiler_16-4.2.5-5PGDG.rhel8.10.x86_64.rpm
plprofiler_16 4.2.4 el8.x86_64 pgdg 6.8 KiB plprofiler_16-4.2.4-1PGDG.rhel8.x86_64.rpm
plprofiler_16 4.2.5 el8.aarch64 pgdg 7.5 KiB plprofiler_16-4.2.5-5PGDG.rhel8.10.aarch64.rpm
plprofiler_16 4.2.4 el8.aarch64 pgdg 6.8 KiB plprofiler_16-4.2.4-1PGDG.rhel8.aarch64.rpm
plprofiler_16 4.2.5 el9.x86_64 pgdg 6.9 KiB plprofiler_16-4.2.5-5PGDG.rhel9.7.x86_64.rpm
plprofiler_16 4.2.4 el9.x86_64 pgdg 6.9 KiB plprofiler_16-4.2.4-1PGDG.rhel9.x86_64.rpm
plprofiler_16 4.2.5 el9.aarch64 pgdg 6.9 KiB plprofiler_16-4.2.5-5PGDG.rhel9.7.aarch64.rpm
plprofiler_16 4.2.4 el9.aarch64 pgdg 6.7 KiB plprofiler_16-4.2.4-1PGDG.rhel9.aarch64.rpm
plprofiler_16 4.2.5 el10.x86_64 pgdg 7.1 KiB plprofiler_16-4.2.5-5PGDG.rhel10.1.x86_64.rpm
plprofiler_16 4.2.5 el10.x86_64 pgdg 7.3 KiB plprofiler_16-4.2.5-2PGDG.rhel10.x86_64.rpm
plprofiler_16 4.2.5 el10.aarch64 pgdg 7.0 KiB plprofiler_16-4.2.5-5PGDG.rhel10.1.aarch64.rpm
postgresql-16-plprofiler 4.2.5 d12.x86_64 pgdg 45.3 KiB postgresql-16-plprofiler_4.2.5-4.pgdg12+1_amd64.deb
postgresql-16-plprofiler 4.2.5 d12.aarch64 pgdg 44.4 KiB postgresql-16-plprofiler_4.2.5-4.pgdg12+1_arm64.deb
postgresql-16-plprofiler 4.2.5 d13.x86_64 pgdg 45.2 KiB postgresql-16-plprofiler_4.2.5-4.pgdg13+1_amd64.deb
postgresql-16-plprofiler 4.2.5 d13.aarch64 pgdg 44.5 KiB postgresql-16-plprofiler_4.2.5-4.pgdg13+1_arm64.deb
postgresql-16-plprofiler 4.2.5 u22.x86_64 pgdg 52.1 KiB postgresql-16-plprofiler_4.2.5-4.pgdg22.04+1_amd64.deb
postgresql-16-plprofiler 4.2.5 u22.aarch64 pgdg 51.1 KiB postgresql-16-plprofiler_4.2.5-4.pgdg22.04+1_arm64.deb
postgresql-16-plprofiler 4.2.5 u24.x86_64 pgdg 45.4 KiB postgresql-16-plprofiler_4.2.5-4.pgdg24.04+1_amd64.deb
postgresql-16-plprofiler 4.2.5 u24.aarch64 pgdg 44.5 KiB postgresql-16-plprofiler_4.2.5-4.pgdg24.04+1_arm64.deb
Package Version OS ORG SIZE File URL
plprofiler_15 4.2.5 el8.x86_64 pgdg 7.5 KiB plprofiler_15-4.2.5-5PGDG.rhel8.10.x86_64.rpm
plprofiler_15 4.2.2 el8.x86_64 pgdg 6.8 KiB plprofiler_15-4.2.2-1PGDG.rhel8.x86_64.rpm
plprofiler_15 4.2.1 el8.x86_64 pgdg 6.6 KiB plprofiler_15-4.2.1-1.rhel8.x86_64.rpm
plprofiler_15 4.2 el8.x86_64 pgdg 6.4 KiB plprofiler_15-4.2-1.rhel8.x86_64.rpm
plprofiler_15 4.2.5 el8.aarch64 pgdg 7.5 KiB plprofiler_15-4.2.5-5PGDG.rhel8.10.aarch64.rpm
plprofiler_15 4.2.2 el8.aarch64 pgdg 6.7 KiB plprofiler_15-4.2.2-1PGDG.rhel8.aarch64.rpm
plprofiler_15 4.2.1 el8.aarch64 pgdg 6.5 KiB plprofiler_15-4.2.1-1.rhel8.aarch64.rpm
plprofiler_15 4.2 el8.aarch64 pgdg 6.4 KiB plprofiler_15-4.2-1.rhel8.aarch64.rpm
plprofiler_15 4.2.5 el9.x86_64 pgdg 6.9 KiB plprofiler_15-4.2.5-5PGDG.rhel9.7.x86_64.rpm
plprofiler_15 4.2.2 el9.x86_64 pgdg 6.8 KiB plprofiler_15-4.2.2-1PGDG.rhel9.x86_64.rpm
plprofiler_15 4.2.1 el9.x86_64 pgdg 6.6 KiB plprofiler_15-4.2.1-1.rhel9.x86_64.rpm
plprofiler_15 4.2 el9.x86_64 pgdg 6.5 KiB plprofiler_15-4.2-1.rhel9.x86_64.rpm
plprofiler_15 4.2.5 el9.aarch64 pgdg 6.9 KiB plprofiler_15-4.2.5-5PGDG.rhel9.7.aarch64.rpm
plprofiler_15 4.2.2 el9.aarch64 pgdg 6.7 KiB plprofiler_15-4.2.2-1PGDG.rhel9.aarch64.rpm
plprofiler_15 4.2.1 el9.aarch64 pgdg 6.5 KiB plprofiler_15-4.2.1-1.rhel9.aarch64.rpm
plprofiler_15 4.2 el9.aarch64 pgdg 6.3 KiB plprofiler_15-4.2-1.rhel9.aarch64.rpm
plprofiler_15 4.2.5 el10.x86_64 pgdg 7.1 KiB plprofiler_15-4.2.5-5PGDG.rhel10.1.x86_64.rpm
plprofiler_15 4.2.5 el10.x86_64 pgdg 7.3 KiB plprofiler_15-4.2.5-2PGDG.rhel10.x86_64.rpm
plprofiler_15 4.2.5 el10.aarch64 pgdg 7.0 KiB plprofiler_15-4.2.5-5PGDG.rhel10.1.aarch64.rpm
postgresql-15-plprofiler 4.2.5 d12.x86_64 pgdg 45.5 KiB postgresql-15-plprofiler_4.2.5-4.pgdg12+1_amd64.deb
postgresql-15-plprofiler 4.2.5 d12.aarch64 pgdg 44.5 KiB postgresql-15-plprofiler_4.2.5-4.pgdg12+1_arm64.deb
postgresql-15-plprofiler 4.2.5 d13.x86_64 pgdg 45.5 KiB postgresql-15-plprofiler_4.2.5-4.pgdg13+1_amd64.deb
postgresql-15-plprofiler 4.2.5 d13.aarch64 pgdg 44.7 KiB postgresql-15-plprofiler_4.2.5-4.pgdg13+1_arm64.deb
postgresql-15-plprofiler 4.2.5 u22.x86_64 pgdg 52.3 KiB postgresql-15-plprofiler_4.2.5-4.pgdg22.04+1_amd64.deb
postgresql-15-plprofiler 4.2.5 u22.aarch64 pgdg 51.3 KiB postgresql-15-plprofiler_4.2.5-4.pgdg22.04+1_arm64.deb
postgresql-15-plprofiler 4.2.5 u24.x86_64 pgdg 45.6 KiB postgresql-15-plprofiler_4.2.5-4.pgdg24.04+1_amd64.deb
postgresql-15-plprofiler 4.2.5 u24.aarch64 pgdg 44.7 KiB postgresql-15-plprofiler_4.2.5-4.pgdg24.04+1_arm64.deb
Package Version OS ORG SIZE File URL
plprofiler_14 4.2.5 el8.x86_64 pgdg 7.5 KiB plprofiler_14-4.2.5-5PGDG.rhel8.10.x86_64.rpm
plprofiler_14 4.2.2 el8.x86_64 pgdg 6.8 KiB plprofiler_14-4.2.2-1PGDG.rhel8.x86_64.rpm
plprofiler_14 4.2.1 el8.x86_64 pgdg 6.6 KiB plprofiler_14-4.2.1-1.rhel8.x86_64.rpm
plprofiler_14 4.2 el8.x86_64 pgdg 6.4 KiB plprofiler_14-4.2-1.rhel8.x86_64.rpm
plprofiler_14 4.2.5 el8.aarch64 pgdg 7.5 KiB plprofiler_14-4.2.5-5PGDG.rhel8.10.aarch64.rpm
plprofiler_14 4.2.2 el8.aarch64 pgdg 6.7 KiB plprofiler_14-4.2.2-1PGDG.rhel8.aarch64.rpm
plprofiler_14 4.2.1 el8.aarch64 pgdg 6.5 KiB plprofiler_14-4.2.1-1.rhel8.aarch64.rpm
plprofiler_14 4.2 el8.aarch64 pgdg 6.4 KiB plprofiler_14-4.2-1.rhel8.aarch64.rpm
plprofiler_14 4.2.5 el9.x86_64 pgdg 6.9 KiB plprofiler_14-4.2.5-5PGDG.rhel9.7.x86_64.rpm
plprofiler_14 4.2.2 el9.x86_64 pgdg 6.8 KiB plprofiler_14-4.2.2-1PGDG.rhel9.x86_64.rpm
plprofiler_14 4.2.1 el9.x86_64 pgdg 6.6 KiB plprofiler_14-4.2.1-1.rhel9.x86_64.rpm
plprofiler_14 4.2 el9.x86_64 pgdg 6.5 KiB plprofiler_14-4.2-1.rhel9.x86_64.rpm
plprofiler_14 4.2.5 el9.aarch64 pgdg 6.9 KiB plprofiler_14-4.2.5-5PGDG.rhel9.7.aarch64.rpm
plprofiler_14 4.2.2 el9.aarch64 pgdg 6.7 KiB plprofiler_14-4.2.2-1PGDG.rhel9.aarch64.rpm
plprofiler_14 4.2.1 el9.aarch64 pgdg 6.5 KiB plprofiler_14-4.2.1-1.rhel9.aarch64.rpm
plprofiler_14 4.2 el9.aarch64 pgdg 6.3 KiB plprofiler_14-4.2-1.rhel9.aarch64.rpm
plprofiler_14 4.2.5 el10.x86_64 pgdg 7.1 KiB plprofiler_14-4.2.5-5PGDG.rhel10.1.x86_64.rpm
plprofiler_14 4.2.5 el10.x86_64 pgdg 7.3 KiB plprofiler_14-4.2.5-2PGDG.rhel10.x86_64.rpm
plprofiler_14 4.2.5 el10.aarch64 pgdg 7.0 KiB plprofiler_14-4.2.5-5PGDG.rhel10.1.aarch64.rpm
postgresql-14-plprofiler 4.2.5 d12.x86_64 pgdg 45.2 KiB postgresql-14-plprofiler_4.2.5-4.pgdg12+1_amd64.deb
postgresql-14-plprofiler 4.2.5 d12.aarch64 pgdg 44.2 KiB postgresql-14-plprofiler_4.2.5-4.pgdg12+1_arm64.deb
postgresql-14-plprofiler 4.2.5 d13.x86_64 pgdg 45.3 KiB postgresql-14-plprofiler_4.2.5-4.pgdg13+1_amd64.deb
postgresql-14-plprofiler 4.2.5 d13.aarch64 pgdg 44.3 KiB postgresql-14-plprofiler_4.2.5-4.pgdg13+1_arm64.deb
postgresql-14-plprofiler 4.2.5 u22.x86_64 pgdg 50.4 KiB postgresql-14-plprofiler_4.2.5-4.pgdg22.04+1_amd64.deb
postgresql-14-plprofiler 4.2.5 u22.aarch64 pgdg 49.4 KiB postgresql-14-plprofiler_4.2.5-4.pgdg22.04+1_arm64.deb
postgresql-14-plprofiler 4.2.5 u24.x86_64 pgdg 45.4 KiB postgresql-14-plprofiler_4.2.5-4.pgdg24.04+1_amd64.deb
postgresql-14-plprofiler 4.2.5 u24.aarch64 pgdg 44.3 KiB postgresql-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