mirror of
https://github.com/postgres/postgres.git
synced 2025-08-28 18:48:04 +03:00
Revert "Track statistics for spilling of changes from ReorderBuffer".
The stats with this commit was available only for WALSenders, however, users might want to see for backends doing logical decoding via SQL API. Then, users might want to reset and access these stats across server restart which was not possible with the current patch. List of commits reverted:caa3c4242c
Don't call elog() while holding spinlock.e641b2a995
Doc: Update the documentation for spilled transaction statistics.5883f5fe27
Fix unportable printf format introduced in commit9290ad198
.9290ad198b
Track statistics for spilling of changes from ReorderBuffer. Additionaly, remove the release notes entry for this feature. Backpatch-through: 13, where it was introduced Discussion: https://postgr.es/m/CA+fd4k5_pPAYRTDrO2PbtTOe0eHQpBvuqmCr8ic39uTNmR49Eg@mail.gmail.com
This commit is contained in:
@@ -317,10 +317,6 @@ 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);
|
||||
@@ -2418,7 +2414,6 @@ 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);
|
||||
@@ -2477,13 +2472,6 @@ ReorderBufferSerializeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
|
||||
spilled++;
|
||||
}
|
||||
|
||||
/* update the statistics */
|
||||
rb->spillCount += 1;
|
||||
rb->spillBytes += size;
|
||||
|
||||
/* Don't consider already serialized transactions. */
|
||||
rb->spillTxns += rbtxn_is_serialized(txn) ? 0 : 1;
|
||||
|
||||
Assert(spilled == txn->nentries_mem);
|
||||
Assert(dlist_is_empty(&txn->changes));
|
||||
txn->nentries_mem = 0;
|
||||
|
@@ -254,7 +254,6 @@ static bool TransactionIdInRecentPast(TransactionId xid, uint32 epoch);
|
||||
|
||||
static void WalSndSegmentOpen(XLogReaderState *state, XLogSegNo nextSegNo,
|
||||
TimeLineID *tli_p);
|
||||
static void UpdateSpillStats(LogicalDecodingContext *ctx);
|
||||
|
||||
|
||||
/* Initialize walsender process before entering the main command loop */
|
||||
@@ -1348,8 +1347,7 @@ WalSndWriteData(LogicalDecodingContext *ctx, XLogRecPtr lsn, TransactionId xid,
|
||||
/*
|
||||
* LogicalDecodingContext 'update_progress' callback.
|
||||
*
|
||||
* Write the current position to the lag tracker (see XLogSendPhysical),
|
||||
* and update the spill statistics.
|
||||
* Write the current position to the lag tracker (see XLogSendPhysical).
|
||||
*/
|
||||
static void
|
||||
WalSndUpdateProgress(LogicalDecodingContext *ctx, XLogRecPtr lsn, TransactionId xid)
|
||||
@@ -1368,11 +1366,6 @@ WalSndUpdateProgress(LogicalDecodingContext *ctx, XLogRecPtr lsn, TransactionId
|
||||
|
||||
LagTrackerWrite(lsn, now);
|
||||
sendTime = now;
|
||||
|
||||
/*
|
||||
* Update statistics about transactions that spilled to disk.
|
||||
*/
|
||||
UpdateSpillStats(ctx);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2418,9 +2411,6 @@ InitWalSenderSlot(void)
|
||||
walsnd->sync_standby_priority = 0;
|
||||
walsnd->latch = &MyProc->procLatch;
|
||||
walsnd->replyTime = 0;
|
||||
walsnd->spillTxns = 0;
|
||||
walsnd->spillCount = 0;
|
||||
walsnd->spillBytes = 0;
|
||||
SpinLockRelease(&walsnd->mutex);
|
||||
/* don't need the lock anymore */
|
||||
MyWalSnd = (WalSnd *) walsnd;
|
||||
@@ -3256,7 +3246,7 @@ offset_to_interval(TimeOffset offset)
|
||||
Datum
|
||||
pg_stat_get_wal_senders(PG_FUNCTION_ARGS)
|
||||
{
|
||||
#define PG_STAT_GET_WAL_SENDERS_COLS 15
|
||||
#define PG_STAT_GET_WAL_SENDERS_COLS 12
|
||||
ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo;
|
||||
TupleDesc tupdesc;
|
||||
Tuplestorestate *tupstore;
|
||||
@@ -3310,9 +3300,6 @@ pg_stat_get_wal_senders(PG_FUNCTION_ARGS)
|
||||
int pid;
|
||||
WalSndState state;
|
||||
TimestampTz replyTime;
|
||||
int64 spillTxns;
|
||||
int64 spillCount;
|
||||
int64 spillBytes;
|
||||
bool is_sync_standby;
|
||||
Datum values[PG_STAT_GET_WAL_SENDERS_COLS];
|
||||
bool nulls[PG_STAT_GET_WAL_SENDERS_COLS];
|
||||
@@ -3336,9 +3323,6 @@ pg_stat_get_wal_senders(PG_FUNCTION_ARGS)
|
||||
applyLag = walsnd->applyLag;
|
||||
priority = walsnd->sync_standby_priority;
|
||||
replyTime = walsnd->replyTime;
|
||||
spillTxns = walsnd->spillTxns;
|
||||
spillCount = walsnd->spillCount;
|
||||
spillBytes = walsnd->spillBytes;
|
||||
SpinLockRelease(&walsnd->mutex);
|
||||
|
||||
/*
|
||||
@@ -3436,11 +3420,6 @@ pg_stat_get_wal_senders(PG_FUNCTION_ARGS)
|
||||
nulls[11] = true;
|
||||
else
|
||||
values[11] = TimestampTzGetDatum(replyTime);
|
||||
|
||||
/* spill to disk */
|
||||
values[12] = Int64GetDatum(spillTxns);
|
||||
values[13] = Int64GetDatum(spillCount);
|
||||
values[14] = Int64GetDatum(spillBytes);
|
||||
}
|
||||
|
||||
tuplestore_putvalues(tupstore, tupdesc, values, nulls);
|
||||
@@ -3677,21 +3656,3 @@ LagTrackerRead(int head, XLogRecPtr lsn, TimestampTz now)
|
||||
Assert(time != 0);
|
||||
return now - time;
|
||||
}
|
||||
|
||||
static void
|
||||
UpdateSpillStats(LogicalDecodingContext *ctx)
|
||||
{
|
||||
ReorderBuffer *rb = ctx->reorder;
|
||||
|
||||
elog(DEBUG2, "UpdateSpillStats: updating stats %p %lld %lld %lld",
|
||||
rb,
|
||||
(long long) rb->spillTxns,
|
||||
(long long) rb->spillCount,
|
||||
(long long) rb->spillBytes);
|
||||
|
||||
SpinLockAcquire(&MyWalSnd->mutex);
|
||||
MyWalSnd->spillTxns = rb->spillTxns;
|
||||
MyWalSnd->spillCount = rb->spillCount;
|
||||
MyWalSnd->spillBytes = rb->spillBytes;
|
||||
SpinLockRelease(&MyWalSnd->mutex);
|
||||
}
|
||||
|
Reference in New Issue
Block a user