Re: BUG #16109: Postgres planning time is high across version (Expose buffer usage during planning in EXPLAIN)
Julien Rouhaud <rjuju123@gmail.com>
From: Julien Rouhaud <rjuju123@gmail.com>
To: Justin Pryzby <pryzby@telsasoft.com>
Cc: Andres Freund <andres@anarazel.de>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2020-01-24T21:06:11Z
Lists: pgsql-bugs, pgsql-hackers
Attachments
- show_planning_buffers-v2.diff (application/octet-stream) patch v2
On Fri, Jan 24, 2020 at 6:55 AM Justin Pryzby <pryzby@telsasoft.com> wrote: > > On Wed, Nov 13, 2019 at 11:39:04AM +0100, Julien Rouhaud wrote: > > (moved to -hackers) > > > > On Tue, Nov 12, 2019 at 9:55 PM Andres Freund <andres@anarazel.de> wrote: > > > > > > This last point is more oriented towards other PG developers: I wonder > > > if we ought to display buffer statistics for plan time, for EXPLAIN > > > (BUFFERS). That'd surely make it easier to discern cases where we > > > e.g. access the index and scan a lot of the index from cases where we > > > hit some CPU time issue. We should easily be able to get that data, I > > > think, we already maintain it, we'd just need to compute the diff > > > between pgBufferUsage before / after planning. > > > > That would be quite interesting to have. I attach as a reference a > > quick POC patch to implement it: > > +1 > > + result.shared_blks_hit = stop->shared_blks_hit - start->shared_blks_hit; > + result.shared_blks_read = stop->shared_blks_read - start->shared_blks_read; > + result.shared_blks_dirtied = stop->shared_blks_dirtied - > + start->shared_blks_dirtied; > [...] > > I think it would be more readable and maintainable using a macro: > > #define CALC_BUFF_DIFF(x) result.##x = stop->##x - start->##x > CALC_BUFF_DIFF(shared_blks_hit); > CALC_BUFF_DIFF(shared_blks_read); > CALC_BUFF_DIFF(shared_blks_dirtied); > ... > #undefine CALC_BUFF_DIFF Good idea. Note that you can't use preprocessor concatenation to generate something else than a token or a number, so the ## can just be removed here.
Commits
-
Include information on buffer usage during planning phase, in EXPLAIN output, take two.
- ce77abe63cfc 13.0 landed
-
Include information on buffer usage during planning phase, in EXPLAIN output.
- ed7a5095716e 13.0 landed
-
Expose BufferUsageAccumDiff().
- 4a539a25ebfc 13.0 cited