mirror of
https://github.com/postgres/postgres.git
synced 2025-08-30 06:01:21 +03:00
Track statistics for spilling of changes from ReorderBuffer.
This adds the statistics about transactions spilled to disk from ReorderBuffer. Users can query the pg_stat_replication view to check these stats. Author: Tomas Vondra, with bug-fixes and minor changes by Dilip Kumar Reviewed-by: Amit Kapila Discussion: https://postgr.es/m/688b0b7f-2f6c-d827-c27b-216a8e3ea700@2ndquadrant.com
This commit is contained in:
@@ -308,6 +308,10 @@ ReorderBufferAllocate(void)
|
||||
buffer->outbufsize = 0;
|
||||
buffer->size = 0;
|
||||
|
||||
buffer->spillCount = 0;
|
||||
buffer->spillTxns = 0;
|
||||
buffer->spillBytes = 0;
|
||||
|
||||
buffer->current_restart_decoding_lsn = InvalidXLogRecPtr;
|
||||
|
||||
dlist_init(&buffer->toplevel_by_lsn);
|
||||
@@ -2415,6 +2419,7 @@ ReorderBufferSerializeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
|
||||
int fd = -1;
|
||||
XLogSegNo curOpenSegNo = 0;
|
||||
Size spilled = 0;
|
||||
Size size = txn->size;
|
||||
|
||||
elog(DEBUG2, "spill %u changes in XID %u to disk",
|
||||
(uint32) txn->nentries_mem, txn->xid);
|
||||
@@ -2473,6 +2478,13 @@ ReorderBufferSerializeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
|
||||
spilled++;
|
||||
}
|
||||
|
||||
/* update the statistics */
|
||||
rb->spillCount += 1;
|
||||
rb->spillBytes += size;
|
||||
|
||||
/* Don't consider already serialized transaction. */
|
||||
rb->spillTxns += txn->serialized ? 0 : 1;
|
||||
|
||||
Assert(spilled == txn->nentries_mem);
|
||||
Assert(dlist_is_empty(&txn->changes));
|
||||
txn->nentries_mem = 0;
|
||||
|
Reference in New Issue
Block a user