Thanks Julien.

Regards,

Satalabha


On Sat, 3 Jun 2023 at 13:06, Julien Rouhaud <rjuju...@gmail.com> wrote:

> Hi,
>
> On Sat, Jun 03, 2023 at 12:48:37PM +0530, Satalabaha Postgres wrote:
> > Hi Listers,
> >
> > We would like to determine how long it takes for each SQL statement to
> > execute within a long-running procedure. I tried to see if
> > pg_stat_statements could offer any insight into the matter. But I was
> > unable to locate any. Is this even possible?
>
> pg_stat_statements can tell you about queries executed inside a procedure,
> as
> long as you set pg_stat_statements.track = 'all':
>
>  rjuju=# select pg_stat_statements_reset();
>  pg_stat_statements_reset
> --------------------------
>
> (1 row)
>
> rjuju=# set pg_stat_statements.track = 'all';
> SET
>
> rjuju=# do
> $$
> begin
> perform count(*) from pg_class;
> perform pg_sleep(2);
> end;
> $$ language plpgsql;
> DO
>
> rjuju=# select query, total_exec_time from pg_stat_statements;
>                 query                 |   total_exec_time
> --------------------------------------+---------------------
>  SELECT count(*) from pg_class        | 0.13941699999999999
>  do                                  +|         2001.903792
>  $$                                  +|
>  begin                               +|
>  perform count(*) from pg_class;     +|
>  perform pg_sleep(2);                +|
>  end;                                +|
>  $$ language plpgsql                  |
>  SELECT pg_sleep($1)                  |         2000.227249
> [...]
>
> If that's not enough, and if your procedures are written in plpgsql you
> could
> also look at plpgsql_check: https://github.com/okbob/plpgsql_check.  It
> has an
> integrated profiler (see https://github.com/okbob/plpgsql_check#profiler)
> that
> works very well.
>
> > unable to locate any. Is this even possible? How can we also determine
> the
> > precise SQL execution plan used when a SQL is run from an application?
> The
> > query runs without issue when we try to execute it directly, but it takes
> > longer to run when an application is used.
>
> You could look at auto_explain for that:
> https://www.postgresql.org/docs/current/auto-explain.html.
>

Reply via email to