From 4b827fd8839d167782f178ae1c3d8d5c810df2f2 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Thu, 21 May 2026 05:20:08 +0000 Subject: [PATCH 1/2] feat: add pg_stat_statements + track_io_timing - Add pg_stat_statements to shared_preload_libraries for query stats - Enable track_io_timing for I/O timing data (blk_read_time/blk_write_time) - <1% overhead on modern Linux with vDSO --- Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8ebf47d..956cc30 100644 --- a/Dockerfile +++ b/Dockerfile @@ -95,7 +95,8 @@ COPY --from=builder /usr/local/lib/postgresql/ /usr/local/lib/postgresql/ COPY --from=builder /usr/local/share/postgresql/ /usr/local/share/postgresql/ # Preload extensions that require shared_preload_libraries -RUN echo "shared_preload_libraries = 'pg_textsearch,pg_cron,pg_partman_bgw'" >> /usr/local/share/postgresql/postgresql.conf.sample +RUN echo "shared_preload_libraries = 'pg_stat_statements,pg_textsearch,pg_cron,pg_partman_bgw'" >> /usr/local/share/postgresql/postgresql.conf.sample && \ + echo "track_io_timing = on" >> /usr/local/share/postgresql/postgresql.conf.sample LABEL org.opencontainers.image.source="https://github.com/constructive-io/docker" -LABEL org.opencontainers.image.description="PostgreSQL 18 with pgvector, PostGIS, pg_textsearch, pg_cron, and pg_partman" +LABEL org.opencontainers.image.description="PostgreSQL 18 with pgvector, PostGIS, pg_textsearch, pg_cron, pg_partman, and pg_stat_statements" From 225b5aff5b42d31c183c0733282aca646c388c5d Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Thu, 21 May 2026 05:36:25 +0000 Subject: [PATCH 2/2] docs: add pg_stat_statements to extensions table and configuration section --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 1f2fa06..7170182 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ Lean PostgreSQL 18 image with essential extensions for modern applications. | [pg_textsearch](https://github.com/timescale/pg_textsearch) | 1.2.0 | BM25 full-text search | | [pg_cron](https://github.com/citusdata/pg_cron) | 1.6.7 | Job scheduler for periodic tasks | | [pg_partman](https://github.com/pgpartman/pg_partman) | 5.4.3 | Partition management | +| [pg_stat_statements](https://www.postgresql.org/docs/current/pgstatstatements.html) | built-in | Query performance statistics | ## Usage @@ -40,8 +41,13 @@ CREATE EXTENSION postgis; CREATE EXTENSION pg_textsearch; CREATE EXTENSION pg_cron; CREATE EXTENSION pg_partman; +CREATE EXTENSION pg_stat_statements; ``` +## Configuration + +`track_io_timing` is enabled by default for accurate I/O metrics in `pg_stat_statements`. This powers the usage metering and query stats collection pipeline. + ## Build ```bash