Re: WAL usage calculation patch
Julien Rouhaud <rjuju123@gmail.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Change the display of WAL usage statistics in Explain.
- 69bfaf2e1de4 13.0 landed
-
Cosmetic fixups for WAL usage work.
- ef08ca113fe3 13.0 landed
-
Allow parallel create index to accumulate buffer usage stats.
- 5c71362174eb 13.0 landed
- f179e9f01b65 11.8 landed
- 13823ad3b012 12.3 landed
-
Allow autovacuum to log WAL usage statistics.
- b7ce6de93b59 13.0 landed
-
Add the option to report WAL usage in EXPLAIN and auto_explain.
- 33e05f89c53e 13.0 landed
-
Allow pg_stat_statements to track WAL usage statistics.
- 6b466bf5f2be 13.0 landed
-
Add infrastructure to track WAL usage.
- df3b181499b4 13.0 landed
-
Include information on buffer usage during planning phase, in EXPLAIN output, take two.
- ce77abe63cfc 13.0 cited
-
Include information on buffer usage during planning phase, in EXPLAIN output.
- ed7a5095716e 13.0 cited
-
Allow parallel vacuum to accumulate buffer usage.
- 3a5e22138a8d 13.0 landed
-
Allow pg_stat_statements to track planning statistics.
- 17e03282241c 13.0 cited
On Tue, Mar 31, 2020 at 8:53 AM Amit Kapila <amit.kapila16@gmail.com> wrote: > > On Mon, Mar 30, 2020 at 6:14 PM Julien Rouhaud <rjuju123@gmail.com> wrote: > > > > On Mon, Mar 30, 2020 at 03:52:38PM +0530, Amit Kapila wrote: > > > > > > I think the right place to compute this information is > > > XLogRecordAssemble even though we update it at the place where you > > > have it in the patch. You can probably compute that in local > > > variables and then transfer to pgWalUsage in XLogInsertRecord. I am > > > fine if you can think of some other way but the current patch doesn't > > > seem correct to me. > > > > My previous approach was indeed totally broken. v8 attached which hopefully > > will be ok. > > > > This is better. Few more comments: > 1. The point (c) from my previous email doesn't seem to be fixed > properly. Basically, the record data is only attached with FPW in > some particular cases like where REGBUF_KEEP_DATA is set, but the > patch assumes it is always set. As I mentioned multiple times already, I'm really not familiar with the WAL code, so I'll be happy to be proven wrong but my reading is that in XLogRecordAssemble(), there are 2 different things being done: - a FPW is optionally added, iif include_image is true, which doesn't take into account REGBUF_KEEP_DATA. Looking at that part of the code I don't see any sign of the recorded FPW being skipped or discarded if REGBUF_KEEP_DATA is not set, and useful variables such as total_len are modified - then data is also optionally added, iif needs_data is set. IIUC a FPW can be added even if the WAL record doesn't contain data. So the behavior look ok to me, as what seems to be useful it to distinguish 9KB WAL for 1 record of 9KB from 9KB or WAL for 1KB record and 1 FPW. What am I missing here? > 2. > + /* Report a full page imsage constructed for the WAL record */ > + *num_fpw += 1; > > Typo. /imsage/image Oops yes, will fix. > 3. We need to enhance the patch to cover WAL usage for parallel > vacuum and parallel create index based on Sawada-San's latest patch[1] > which fixed the case for buffer usage. I'm sorry but I'm not following. Do you mean adding regression tests for that case?