From 320545bfcfee9c6826d9ae96a880ec82fc03d860 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Mon, 17 Feb 2025 14:50:33 +0900 Subject: [PATCH] Add information about WAL buffers being full to EXPLAIN (WAL) This is similar to ce5bcc4a9f26, relying on the addition of wal_buffers_full to WalUsage. This time, the information is added to the output generated by EXPLAIN (WAL). Author: Bertrand Drouvot Reviewed-by: Ilia Evdokimov Discussion: https://postgr.es/m/Z6SOha5YFFgvpwQY@ip-10-97-1-34.eu-west-3.compute.internal --- doc/src/sgml/ref/explain.sgml | 5 +++-- src/backend/commands/explain.c | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/doc/src/sgml/ref/explain.sgml b/doc/src/sgml/ref/explain.sgml index 6361a14e65d..652ece7213a 100644 --- a/doc/src/sgml/ref/explain.sgml +++ b/doc/src/sgml/ref/explain.sgml @@ -242,8 +242,9 @@ ROLLBACK; Include information on WAL record generation. Specifically, include the - number of records, number of full page images (fpi) and the amount of WAL - generated in bytes. In text format, only non-zero values are printed. + number of records, number of full page images (fpi), the amount of WAL + generated in bytes and the number of times the WAL buffers became full. + In text format, only non-zero values are printed. This parameter may only be used when ANALYZE is also enabled. It defaults to FALSE. diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index c24e66f82e1..dc4bef9ab81 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -4242,7 +4242,7 @@ show_wal_usage(ExplainState *es, const WalUsage *usage) { /* Show only positive counter values. */ if ((usage->wal_records > 0) || (usage->wal_fpi > 0) || - (usage->wal_bytes > 0)) + (usage->wal_bytes > 0) || (usage->wal_buffers_full > 0)) { ExplainIndentText(es); appendStringInfoString(es->str, "WAL:"); @@ -4256,6 +4256,9 @@ show_wal_usage(ExplainState *es, const WalUsage *usage) if (usage->wal_bytes > 0) appendStringInfo(es->str, " bytes=" UINT64_FORMAT, usage->wal_bytes); + if (usage->wal_buffers_full > 0) + appendStringInfo(es->str, " buffers full=%lld", + (long long) usage->wal_buffers_full); appendStringInfoChar(es->str, '\n'); } } @@ -4267,6 +4270,8 @@ show_wal_usage(ExplainState *es, const WalUsage *usage) usage->wal_fpi, es); ExplainPropertyUInteger("WAL Bytes", NULL, usage->wal_bytes, es); + ExplainPropertyInteger("WAL Buffers Full", NULL, + usage->wal_buffers_full, es); } } -- 2.30.2