Allow sampling of statements depending on duration

Enterprise / PostgreSQL - Tomas Vondra [postgresql.org] - 6 November 2019 18:11 EST

This allows logging a sample of statements, without incurring excessive log traffic (which may impact performance). This can be useful when analyzing workloads with lots of short queries.

The sampling is configured using two new GUC parameters:

- log_min_duration_sample - minimum required statement duration

- log_statement_sample_rate - sample rate (0.0 - 1.0)

Only statements with duration exceeding log_min_duration_sample are considered for sampling. To enable sampling, both those GUCs have to be set correctly.

The existing log_min_duration_statement GUC has a higher priority, i.e. statements with duration exceeding log_min_duration_statement will be always logged, irrespectedly of how the sampling is configured. This means only configurations

log_min_duration_sample < log_min_duration_statement

do actually sample the statements, instead of logging everything.

Author: Adrien Nayrat

6e3e6cc0e8 Allow sampling of statements depending on duration
doc/src/sgml/config.sgml | 85 +++++++++++++++++++++++++++
src/backend/tcop/postgres.c | 40 +++++++++----
src/backend/utils/misc/guc.c | 27 ++++++++-
src/backend/utils/misc/postgresql.conf.sample | 11 ++++
src/include/utils/guc.h | 2 +
5 files changed, 153 insertions(+), 12 deletions(-)

Upstream: git.postgresql.org


  • Share