Re: auto_explain : log queries with wrong estimation

From: Maksim Milyutin <milyutinma(at)gmail(dot)com>
To: Adrien Nayrat <adrien(dot)nayrat(at)dalibo(dot)com>, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: auto_explain : log queries with wrong estimation
Date: 2017-08-24 13:08:56
Message-ID: 9157fdeb-f2fc-0b8f-4f78-0c4f964ff221@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 24.08.2017 14:56, Adrien Nayrat wrote:

> Hi hackers,

Hi,

> I try to made a patch to auto_explain in order to log queries with
> wrong estimation.
>
> I compare planned row id : queryDesc->planstate->plan->plan_rows
>
> Vs ntuples : queryDesc->planstate->instrument->ntuples;

AFAICS you want to introduce two additional per-node variables:
- auto_explain_log_estimate_ratio that denotes minimum ratio (>= 1)
between real value and planned one. I would add 'min' prefix before
'ratio'.
- auto_explain_log_estimate_min_rows - minimum absolute difference
between those two values. IMHO this name is somewhat poor, the suffix
'min_diff_rows' looks better.
If real expressions (ratio and diff) exceed these threshold values both,
you log this situation. I'm right?

> If I understand, instrumentation is used only with explain. So my
> patch works
> only with explain (and segfault without).

Instrumentation is initialized only with analyze (log_analyze is true)[1]

> Is there a simple way to get ntuples?

It's interesting question. In one's time I didn't find any way to get
the amount of tuples emitted from a node.

1. contrib/auto_explain/auto_explain.c:221

--
Regards,
Maksim Milyutin

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Simone Gotti 2017-08-24 13:38:20 [PATCH] Fix drop replication slot blocking instead of returning error
Previous Message Thomas Munro 2017-08-24 12:08:08 Re: POC: Sharing record typmods between backends