Early Setup of instrumentation information in pg_stat_statements
От | Amit Kapila |
---|---|
Тема | Early Setup of instrumentation information in pg_stat_statements |
Дата | |
Msg-id | CAA4eK1+THkKcGyHH=BmHD19BLnP3fX8EdEyxEbXOkL+YDC_axw@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: Early Setup of instrumentation information in pg_stat_statements
Re: Early Setup of instrumentation information in pg_stat_statements |
Список | pgsql-hackers |
Currently in pg_stat_statements, the setup to track
instrumentation/totaltime information is done after
ExecutorStart(). Can we do this before ExecutorStart()?
In particular, I am referring to below code:
pgss_ExecutorStart(QueryDesc *queryDesc, int eflags)
{
..
standard_ExecutorStart(queryDesc, eflags);
..
if (pgss_enabled() && queryDesc->plannedstmt->queryId != 0)
{
..
if (queryDesc->totaltime == NULL)
{
..
queryDesc->totaltime = InstrAlloc(1, INSTRUMENT_ALL);
..
}
}
}
The reason why I am asking is that to track instrumentation
information (like buffer usage parameters) in case of parallel
sequence scan, we need to pass this information at start of
backend workers which are started in ExecutorStart() phase
and at that time, there is no information available which can
guarantee (we have queryId stored in planned stmt, but I think
that is not sufficient to decide) that such an information is
needed by plugin. This works well for Explain statement as
that has the information for instrumentation available before
ExecutorStart() phase.
Please suggest me if there is a better way to make this
information available in ExecutorStart() phase?
В списке pgsql-hackers по дате отправления: