mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +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_slots view to check these stats and call pg_stat_reset_replication_slot to reset the stats of a particular slot. Users can pass NULL in pg_stat_reset_replication_slot to reset stats of all the slots. This commit extends the statistics collector to track this information about slots. Author: Sawada Masahiko and Amit Kapila Reviewed-by: Amit Kapila and Dilip Kumar Discussion: https://postgr.es/m/CA+fd4k5_pPAYRTDrO2PbtTOe0eHQpBvuqmCr8ic39uTNmR49Eg@mail.gmail.com
This commit is contained in:
@ -32,6 +32,7 @@
|
||||
#include "access/xlog_internal.h"
|
||||
#include "fmgr.h"
|
||||
#include "miscadmin.h"
|
||||
#include "pgstat.h"
|
||||
#include "replication/decode.h"
|
||||
#include "replication/logical.h"
|
||||
#include "replication/origin.h"
|
||||
@ -1460,3 +1461,31 @@ ResetLogicalStreamingState(void)
|
||||
CheckXidAlive = InvalidTransactionId;
|
||||
bsysscan = false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Report stats for a slot.
|
||||
*/
|
||||
void
|
||||
UpdateDecodingStats(LogicalDecodingContext *ctx)
|
||||
{
|
||||
ReorderBuffer *rb = ctx->reorder;
|
||||
|
||||
/*
|
||||
* Nothing to do if we haven't spilled anything since the last time the
|
||||
* stats has been sent.
|
||||
*/
|
||||
if (rb->spillBytes <= 0)
|
||||
return;
|
||||
|
||||
elog(DEBUG2, "UpdateSpillStats: updating stats %p %lld %lld %lld",
|
||||
rb,
|
||||
(long long) rb->spillTxns,
|
||||
(long long) rb->spillCount,
|
||||
(long long) rb->spillBytes);
|
||||
|
||||
pgstat_report_replslot(NameStr(ctx->slot->data.name),
|
||||
rb->spillTxns, rb->spillCount, rb->spillBytes);
|
||||
rb->spillTxns = 0;
|
||||
rb->spillCount = 0;
|
||||
rb->spillBytes = 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user