Re: auto_explain sample rate

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Julien Rouhaud <julien(dot)rouhaud(at)dalibo(dot)com>
Cc: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>, Craig Ringer <craig(at)2ndquadrant(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: auto_explain sample rate
Date: 2016-02-16 21:51:38
Message-ID: 20160216215138.GA837656@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Julien Rouhaud wrote:

Hijacking this macro is just too obscure:

> #define auto_explain_enabled() \
> (auto_explain_log_min_duration >= 0 && \
> - (nesting_level == 0 || auto_explain_log_nested_statements))
> + (nesting_level == 0 || auto_explain_log_nested_statements) && \
> + current_query_sampled)

because it then becomes hard to figure out that assigning to _sampled is
what makes the enabled() check pass or not depending on sampling:

> @@ -191,6 +211,14 @@ _PG_fini(void)
> static void
> explain_ExecutorStart(QueryDesc *queryDesc, int eflags)
> {
> + /*
> + * For ratio sampling, randomly choose top-level statement. Either
> + * all nested statements will be explained or none will.
> + */
> + if (auto_explain_log_min_duration >= 0 && nesting_level == 0)
> + current_query_sampled = (random() < auto_explain_sample_ratio *
> + MAX_RANDOM_VALUE);
> +
> if (auto_explain_enabled())
> {

I think it's better to keep the "enabled" macro unmodified, and just add
another conditional to the "if" test there.

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Pavel Stehule 2016-02-16 21:58:51 Re: proposal: PL/Pythonu - function ereport
Previous Message Julien Rouhaud 2016-02-16 21:24:59 Re: auto_explain sample rate