diff options
Diffstat (limited to 'src/backend/access/transam')
| -rw-r--r-- | src/backend/access/transam/xlog.c | 2 | ||||
| -rw-r--r-- | src/backend/access/transam/xloginsert.c | 15 | 
2 files changed, 14 insertions, 3 deletions
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index eceab341255..fd91bcd68ec 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -749,6 +749,7 @@ XLogInsertRecord(XLogRecData *rdata,  				 XLogRecPtr fpw_lsn,  				 uint8 flags,  				 int num_fpi, +				 uint64 fpi_bytes,  				 bool topxid_included)  {  	XLogCtlInsert *Insert = &XLogCtl->Insert; @@ -1081,6 +1082,7 @@ XLogInsertRecord(XLogRecData *rdata,  		pgWalUsage.wal_bytes += rechdr->xl_tot_len;  		pgWalUsage.wal_records++;  		pgWalUsage.wal_fpi += num_fpi; +		pgWalUsage.wal_fpi_bytes += fpi_bytes;  		/* Required for the flush of pending stats WAL data */  		pgstat_report_fixed = true; diff --git a/src/backend/access/transam/xloginsert.c b/src/backend/access/transam/xloginsert.c index 496e0fa4ac6..58cb4b1b00c 100644 --- a/src/backend/access/transam/xloginsert.c +++ b/src/backend/access/transam/xloginsert.c @@ -33,12 +33,14 @@  #include "access/xloginsert.h"  #include "catalog/pg_control.h"  #include "common/pg_lzcompress.h" +#include "executor/instrument.h"  #include "miscadmin.h"  #include "pg_trace.h"  #include "replication/origin.h"  #include "storage/bufmgr.h"  #include "storage/proc.h"  #include "utils/memutils.h" +#include "utils/pgstat_internal.h"  /*   * Guess the maximum buffer size required to store a compressed version of @@ -137,6 +139,7 @@ static MemoryContext xloginsert_cxt;  static XLogRecData *XLogRecordAssemble(RmgrId rmid, uint8 info,  									   XLogRecPtr RedoRecPtr, bool doPageWrites,  									   XLogRecPtr *fpw_lsn, int *num_fpi, +									   uint64 *fpi_bytes,  									   bool *topxid_included);  static bool XLogCompressBackupBlock(const PageData *page, uint16 hole_offset,  									uint16 hole_length, void *dest, uint16 *dlen); @@ -510,6 +513,7 @@ XLogInsert(RmgrId rmid, uint8 info)  		XLogRecPtr	fpw_lsn;  		XLogRecData *rdt;  		int			num_fpi = 0; +		uint64		fpi_bytes = 0;  		/*  		 * Get values needed to decide whether to do full-page writes. Since @@ -519,10 +523,11 @@ XLogInsert(RmgrId rmid, uint8 info)  		GetFullPageWriteInfo(&RedoRecPtr, &doPageWrites);  		rdt = XLogRecordAssemble(rmid, info, RedoRecPtr, doPageWrites, -								 &fpw_lsn, &num_fpi, &topxid_included); +								 &fpw_lsn, &num_fpi, &fpi_bytes, +								 &topxid_included);  		EndPos = XLogInsertRecord(rdt, fpw_lsn, curinsert_flags, num_fpi, -								  topxid_included); +								  fpi_bytes, topxid_included);  	} while (EndPos == InvalidXLogRecPtr);  	XLogResetInsertion(); @@ -560,7 +565,8 @@ XLogSimpleInsertInt64(RmgrId rmid, uint8 info, int64 value)  static XLogRecData *  XLogRecordAssemble(RmgrId rmid, uint8 info,  				   XLogRecPtr RedoRecPtr, bool doPageWrites, -				   XLogRecPtr *fpw_lsn, int *num_fpi, bool *topxid_included) +				   XLogRecPtr *fpw_lsn, int *num_fpi, uint64 *fpi_bytes, +				   bool *topxid_included)  {  	XLogRecData *rdt;  	uint64		total_len = 0; @@ -796,6 +802,9 @@ XLogRecordAssemble(RmgrId rmid, uint8 info,  			}  			total_len += bimg.length; + +			/* Track the WAL full page images in bytes */ +			*fpi_bytes += bimg.length;  		}  		if (needs_data)  | 
