Skip to content
pg_background

pg_background

pg_background : Run SQL queries in the background

Overview

IDExtensionPackageVersionCategoryLicenseLanguage
1110
pg_background
pg_background
1.9.2
TIME
GPL-3.0
C
AttributeHas BinaryHas LibraryNeed LoadHas DDLRelocatableTrusted
--s-d-r
No
Yes
No
Yes
yes
no
Relationships
See Also
pg_cron
pg_task
pg_later
pgq
timescaledb
timescaledb_toolkit
timeseries
periods

Release tag 1.9.2 still ships extension SQL version 1.9.

Packages

TypeRepoVersionPG Major CompatibilityPackage PatternDependencies
EXT
MIXED
1.9.2
18
17
16
15
14
pg_background-
RPM
PGDG
1.9.3
18
17
16
15
14
pg_background_$v-
DEB
PIGSTY
1.9.3
18
17
16
15
14
postgresql-$v-pg-background-
Linux / PGPG18PG17PG16PG15PG14
el8.x86_64
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
el8.aarch64
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
el9.x86_64
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
el9.aarch64
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
el10.x86_64
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
el10.aarch64
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
PGDG 1.9.3
d12.x86_64
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
d12.aarch64
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
d13.x86_64
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
d13.aarch64
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
u22.x86_64
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
u22.aarch64
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
u24.x86_64
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
u24.aarch64
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
u26.x86_64
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
u26.aarch64
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PGDG 1.9.2
PackageVersionOSORGSIZEFile URL
pg_background_181.9.3el8.x86_64pgdg58.5 KiBpg_background_18-1.9.3-1PGDG.rhel8.10.x86_64.rpm
pg_background_181.9.2el8.x86_64pigsty56.3 KiBpg_background_18-1.9.2-1PIGSTY.el8.x86_64.rpm
pg_background_181.9.2el8.x86_64pgdg55.4 KiBpg_background_18-1.9.2-1PGDG.rhel8.10.x86_64.rpm
pg_background_181.9.1el8.x86_64pgdg55.1 KiBpg_background_18-1.9.1-1PGDG.rhel8.10.x86_64.rpm
pg_background_181.6el8.x86_64pgdg41.8 KiBpg_background_18-1.6-1PGDG.rhel8.10.x86_64.rpm
pg_background_181.5el8.x86_64pgdg22.5 KiBpg_background_18-1.5-1PGDG.rhel8.x86_64.rpm
pg_background_181.9.3el8.aarch64pgdg57.3 KiBpg_background_18-1.9.3-1PGDG.rhel8.10.aarch64.rpm
pg_background_181.9.2el8.aarch64pigsty55.2 KiBpg_background_18-1.9.2-1PIGSTY.el8.aarch64.rpm
pg_background_181.9.2el8.aarch64pgdg54.1 KiBpg_background_18-1.9.2-1PGDG.rhel8.10.aarch64.rpm
pg_background_181.9.1el8.aarch64pgdg53.9 KiBpg_background_18-1.9.1-1PGDG.rhel8.10.aarch64.rpm
pg_background_181.8el8.aarch64pgdg45.8 KiBpg_background_18-1.8-1PGDG.rhel8.10.aarch64.rpm
pg_background_181.6el8.aarch64pgdg40.7 KiBpg_background_18-1.6-1PGDG.rhel8.10.aarch64.rpm
pg_background_181.5el8.aarch64pgdg22.0 KiBpg_background_18-1.5-1PGDG.rhel8.aarch64.rpm
pg_background_181.9.3el9.x86_64pgdg57.4 KiBpg_background_18-1.9.3-1PGDG.rhel9.7.x86_64.rpm
pg_background_181.9.2el9.x86_64pigsty55.3 KiBpg_background_18-1.9.2-1PIGSTY.el9.x86_64.rpm
pg_background_181.9.2el9.x86_64pgdg54.3 KiBpg_background_18-1.9.2-1PGDG.rhel9.7.x86_64.rpm
pg_background_181.9.1el9.x86_64pgdg54.0 KiBpg_background_18-1.9.1-1PGDG.rhel9.7.x86_64.rpm
pg_background_181.8el9.x86_64pgdg46.5 KiBpg_background_18-1.8-1PGDG.rhel9.7.x86_64.rpm
pg_background_181.6el9.x86_64pgdg41.3 KiBpg_background_18-1.6-1PGDG.rhel9.7.x86_64.rpm
pg_background_181.5el9.x86_64pgdg22.7 KiBpg_background_18-1.5-1PGDG.rhel9.x86_64.rpm
pg_background_181.9.3el9.aarch64pgdg56.4 KiBpg_background_18-1.9.3-1PGDG.rhel9.7.aarch64.rpm
pg_background_181.9.2el9.aarch64pigsty54.3 KiBpg_background_18-1.9.2-1PIGSTY.el9.aarch64.rpm
pg_background_181.9.2el9.aarch64pgdg53.4 KiBpg_background_18-1.9.2-1PGDG.rhel9.7.aarch64.rpm
pg_background_181.9.1el9.aarch64pgdg53.1 KiBpg_background_18-1.9.1-1PGDG.rhel9.7.aarch64.rpm
pg_background_181.8el9.aarch64pgdg45.4 KiBpg_background_18-1.8-1PGDG.rhel9.7.aarch64.rpm
pg_background_181.6el9.aarch64pgdg40.3 KiBpg_background_18-1.6-1PGDG.rhel9.7.aarch64.rpm
pg_background_181.5el9.aarch64pgdg22.0 KiBpg_background_18-1.5-1PGDG.rhel9.aarch64.rpm
pg_background_181.9.3el10.x86_64pgdg57.6 KiBpg_background_18-1.9.3-1PGDG.rhel10.1.x86_64.rpm
pg_background_181.9.2el10.x86_64pigsty55.5 KiBpg_background_18-1.9.2-1PIGSTY.el10.x86_64.rpm
pg_background_181.9.2el10.x86_64pgdg54.5 KiBpg_background_18-1.9.2-1PGDG.rhel10.1.x86_64.rpm
pg_background_181.9.1el10.x86_64pgdg54.2 KiBpg_background_18-1.9.1-1PGDG.rhel10.1.x86_64.rpm
pg_background_181.8el10.x86_64pgdg46.8 KiBpg_background_18-1.8-1PGDG.rhel10.1.x86_64.rpm
pg_background_181.6el10.x86_64pgdg41.6 KiBpg_background_18-1.6-1PGDG.rhel10.1.x86_64.rpm
pg_background_181.5el10.x86_64pgdg23.1 KiBpg_background_18-1.5-1PGDG.rhel10.x86_64.rpm
pg_background_181.9.3el10.aarch64pgdg56.8 KiBpg_background_18-1.9.3-1PGDG.rhel10.1.aarch64.rpm
pg_background_181.9.2el10.aarch64pigsty54.7 KiBpg_background_18-1.9.2-1PIGSTY.el10.aarch64.rpm
pg_background_181.9.2el10.aarch64pgdg53.8 KiBpg_background_18-1.9.2-1PGDG.rhel10.1.aarch64.rpm
pg_background_181.9.1el10.aarch64pgdg53.5 KiBpg_background_18-1.9.1-1PGDG.rhel10.1.aarch64.rpm
pg_background_181.8el10.aarch64pgdg45.9 KiBpg_background_18-1.8-1PGDG.rhel10.1.aarch64.rpm
pg_background_181.6el10.aarch64pgdg40.7 KiBpg_background_18-1.6-1PGDG.rhel10.1.aarch64.rpm
pg_background_181.5el10.aarch64pgdg22.6 KiBpg_background_18-1.5-1PGDG.rhel10.aarch64.rpm
postgresql-18-pg-background1.9.2d12.x86_64pgdg58.9 KiBpostgresql-18-pg-background_1.9.2-1.pgdg12+1_amd64.deb
postgresql-18-pg-background1.9.2d12.x86_64pigsty89.2 KiBpostgresql-18-pg-background_1.9.2-1PIGSTY~bookworm_amd64.deb
postgresql-18-pg-background1.9.1d12.x86_64pgdg58.6 KiBpostgresql-18-pg-background_1.9.1-1.pgdg12+1_amd64.deb
postgresql-18-pg-background1.9.2d12.aarch64pgdg57.0 KiBpostgresql-18-pg-background_1.9.2-1.pgdg12+1_arm64.deb
postgresql-18-pg-background1.9.2d12.aarch64pigsty87.4 KiBpostgresql-18-pg-background_1.9.2-1PIGSTY~bookworm_arm64.deb
postgresql-18-pg-background1.9.1d12.aarch64pgdg56.8 KiBpostgresql-18-pg-background_1.9.1-1.pgdg12+1_arm64.deb
postgresql-18-pg-background1.9.2d13.x86_64pgdg58.7 KiBpostgresql-18-pg-background_1.9.2-1.pgdg13+1_amd64.deb
postgresql-18-pg-background1.9.2d13.x86_64pigsty89.3 KiBpostgresql-18-pg-background_1.9.2-1PIGSTY~trixie_amd64.deb
postgresql-18-pg-background1.9.1d13.x86_64pgdg58.7 KiBpostgresql-18-pg-background_1.9.1-1.pgdg13+1_amd64.deb
postgresql-18-pg-background1.9.2d13.aarch64pgdg57.3 KiBpostgresql-18-pg-background_1.9.2-1.pgdg13+1_arm64.deb
postgresql-18-pg-background1.9.2d13.aarch64pigsty87.9 KiBpostgresql-18-pg-background_1.9.2-1PIGSTY~trixie_arm64.deb
postgresql-18-pg-background1.9.1d13.aarch64pgdg57.2 KiBpostgresql-18-pg-background_1.9.1-1.pgdg13+1_arm64.deb
postgresql-18-pg-background1.9.2u22.x86_64pgdg59.7 KiBpostgresql-18-pg-background_1.9.2-1.pgdg22.04+1_amd64.deb
postgresql-18-pg-background1.9.2u22.x86_64pigsty94.9 KiBpostgresql-18-pg-background_1.9.2-1PIGSTY~jammy_amd64.deb
postgresql-18-pg-background1.9.1u22.x86_64pgdg59.8 KiBpostgresql-18-pg-background_1.9.1-1.pgdg22.04+1_amd64.deb
postgresql-18-pg-background1.9.2u22.aarch64pgdg58.0 KiBpostgresql-18-pg-background_1.9.2-1.pgdg22.04+1_arm64.deb
postgresql-18-pg-background1.9.2u22.aarch64pigsty93.6 KiBpostgresql-18-pg-background_1.9.2-1PIGSTY~jammy_arm64.deb
postgresql-18-pg-background1.9.1u22.aarch64pgdg58.1 KiBpostgresql-18-pg-background_1.9.1-1.pgdg22.04+1_arm64.deb
postgresql-18-pg-background1.9.2u24.x86_64pgdg58.8 KiBpostgresql-18-pg-background_1.9.2-1.pgdg24.04+1_amd64.deb
postgresql-18-pg-background1.9.2u24.x86_64pigsty92.0 KiBpostgresql-18-pg-background_1.9.2-1PIGSTY~noble_amd64.deb
postgresql-18-pg-background1.9.1u24.x86_64pgdg58.7 KiBpostgresql-18-pg-background_1.9.1-1.pgdg24.04+1_amd64.deb
postgresql-18-pg-background1.9.2u24.aarch64pgdg57.2 KiBpostgresql-18-pg-background_1.9.2-1.pgdg24.04+1_arm64.deb
postgresql-18-pg-background1.9.2u24.aarch64pigsty91.1 KiBpostgresql-18-pg-background_1.9.2-1PIGSTY~noble_arm64.deb
postgresql-18-pg-background1.9.1u24.aarch64pgdg57.1 KiBpostgresql-18-pg-background_1.9.1-1.pgdg24.04+1_arm64.deb
postgresql-18-pg-background1.9.2u26.x86_64pgdg58.4 KiBpostgresql-18-pg-background_1.9.2-1.pgdg26.04+1_amd64.deb
postgresql-18-pg-background1.9.2u26.x86_64pigsty91.4 KiBpostgresql-18-pg-background_1.9.2-1PIGSTY~resolute_amd64.deb
postgresql-18-pg-background1.9.1u26.x86_64pgdg58.3 KiBpostgresql-18-pg-background_1.9.1-1.pgdg26.04+1_amd64.deb
postgresql-18-pg-background1.9.2u26.aarch64pgdg56.3 KiBpostgresql-18-pg-background_1.9.2-1.pgdg26.04+1_arm64.deb
postgresql-18-pg-background1.9.2u26.aarch64pigsty89.9 KiBpostgresql-18-pg-background_1.9.2-1PIGSTY~resolute_arm64.deb
postgresql-18-pg-background1.9.1u26.aarch64pgdg56.2 KiBpostgresql-18-pg-background_1.9.1-1.pgdg26.04+1_arm64.deb

Source

pig build pkg pg_background;		# build deb

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgsql -u   # add both repo and update cache

Install this extension with pig:

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

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

Create this extension with:

CREATE EXTENSION pg_background;

Usage

Sources: official README, v1.9.2 release

pg_background executes SQL in PostgreSQL background worker processes. The worker runs inside the server and uses its own transaction, which makes it useful for asynchronous maintenance, autonomous side effects, and long-running tasks that should not block the caller.

CREATE EXTENSION pg_background;

SELECT * FROM pg_background_launch_v2(
  'SELECT count(*) FROM large_table',
  65536,
  'count-large-table'
) AS h;

SELECT * FROM pg_background_result_v2(h.pid, h.cookie) AS (count bigint);

Core API

  • pg_background_launch_v2(sql, queue_size, label) launches a tracked worker and returns (pid, cookie).
  • pg_background_submit_v2(sql, queue_size, label) is fire-and-forget for side-effect SQL.
  • pg_background_result_v2(pid, cookie) consumes the worker result set once.
  • pg_background_wait_v2(...) and pg_background_wait_v2_timeout(...) wait for completion.
  • pg_background_cancel_v2(...) stops execution; pg_background_detach_v2(...) stops tracking but lets work continue.
  • pg_background_list_v2(), pg_background_stats_v2(), and pg_background_get_progress_v2(...) expose worker state and progress.

Typical Patterns

Run maintenance without holding the client session open:

SELECT * FROM pg_background_submit_v2(
  'VACUUM (ANALYZE) public.events',
  65536,
  'vacuum-events'
);

Use an autonomous side effect from application SQL:

SELECT * FROM pg_background_submit_v2(
  $$INSERT INTO audit_log(ts, event) VALUES (clock_timestamp(), 'job queued')$$
);

GUCs And Security

  • pg_background.max_workers limits concurrent workers per session.
  • pg_background.default_queue_size controls the shared-memory queue size.
  • pg_background.worker_timeout sets an execution timeout; 0 means no limit.
  • The extension creates a dedicated pg_background_worker NOLOGIN role and ships helper functions to grant or revoke execution privileges.

Caveats

  • Prefer the V2 API. The older V1 API is still present for compatibility but lacks cookie-based PID reuse protection.
  • The v1.9.2 release is a binary-only patch for assert-enabled PostgreSQL builds. The SQL extension version remains 1.9, so there is no new SQL upgrade script or user-facing function delta from 1.9.1.
Last updated on