Re: WAL usage calculation patch
Kirill Bychik <kirill.bychik@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
> > Please feel free to work on any extension of this patch idea. I lack > > both time and knowledge to do it all by myself. > > > I'm adding a 3rd patch on top of yours to expose the new WAL counters in > pg_stat_database, for vacuum and autovacuum. I'm not really enthiusiastic with > this approach but I didn't find better, and maybe this will raise some better > ideas. The only sure thing is that we're not going to add a bunch of new > fields in pg_stat_all_tables anyway. > > We can also drop this 3rd patch entirely if no one's happy about it without > impacting the first two. No objections about 3rd on my side, unless we miss the CF completely. As for the code, I believe: + walusage.wal_records = pgWalUsage.wal_records - + walusage_start.wal_records; + walusage.wal_fp_records = pgWalUsage.wal_fp_records - + walusage_start.wal_fp_records; + walusage.wal_bytes = pgWalUsage.wal_bytes - walusage_start.wal_bytes; Could be done much simpler via the utility: WalUsageAccumDiff(walusage, pgWalUsage, walusage_start); On a side note, I agree API to the buf/wal usage is far from perfect. > > Test had been reworked, and I believe it should be stable now, the > > part which checks WAL is written and there is a correlation between > > affected rows and WAL records. I still have no idea how to test > > full-page writes against regular updates, it seems very unstable. > > Please share ideas if any. > > > I just reviewed the patches, and it globally looks good to me. The way to > detect full page images looks sensible, but I'm really not familiar with that > code so additional review would be useful. > > I noticed that the new wal_write_fp_records field in pg_stat_statements wasn't > used in the test. Since I have to add all the patches to make the cfbot happy, > I slightly adapted the tests to reference the fp column too. There was also a > minor issue in the documentation, as wal_records and wal_bytes were copy/pasted > twice while wal_write_fp_records wasn't documented, so I also changed it. > > Let me know if you're ok with those changes. Sorry for not getting wal_fp_usage into the docs, my fault. As for the tests, please get somebody else to review this. I strongly believe checking full page writes here could be a source of instability.