On 6th of November 2019, Tomas Vondra committed patch:
Allow sampling of statements depending on duration 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 Discussion: https://postgr.es/m/-a8f7-3be2-155a-@anayrat.info
Description is pretty obvious, but just in case.
We have now quite a lot of various settings to log queries:
There was also committed, but later reverted log_statement_sample_rate.
This new patch, adds log_min_duration_sample and re-introduces log_statement_sample_rate.
Basically we set two new gucs like this:
log_min_duration_sample = 100 log_statement_sample_rate = 0.5
Which would mean, that Pg will log 50% (0.5) of all queries above 100ms.
Of course this can be used together with log_min_duration_statement, where we could have something like:
log_min_duration_sample = 100 log_statement_sample_rate = 0.1 log_min_duration_statement = 500
Where we log 10% of queries over 100ms, and all of queries above 500 ms.
Pretty cool. Thanks to all involved.