From c4fc8e0ac8ff8846b7a7363b84ca31c3a30f2ae7 Mon Sep 17 00:00:00 2001 From: Dmitrii Dolgov <9erthalion6@gmail.com> Date: Thu, 11 Jun 2026 22:03:07 +0200 Subject: [PATCH v2 1/3] Add USDT for nbtree page splits and suffix truncation Add new USDT for nbtree: * nbtree__page__split with a single argument BlockNumber to trace page splits, which is usefull for understanding B-Tree performance. * nbtree__page__truncate with a single integer argument representing number of truncated columns, which tells ups truncation effectiveness. --- src/backend/access/nbtree/nbtinsert.c | 3 +++ src/backend/access/nbtree/nbtutils.c | 2 ++ src/backend/utils/probes.d | 3 +++ 3 files changed, 8 insertions(+) diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c index c8af97dd23d..ddb7b47118e 100644 --- a/src/backend/access/nbtree/nbtinsert.c +++ b/src/backend/access/nbtree/nbtinsert.c @@ -24,6 +24,7 @@ #include "common/pg_prng.h" #include "lib/qunique.h" #include "miscadmin.h" +#include "pg_trace.h" #include "storage/lmgr.h" #include "storage/predicate.h" #include "utils/injection_point.h" @@ -2107,6 +2108,8 @@ _bt_split(Relation rel, Relation heaprel, BTScanInsert itup_key, Buffer buf, pfree(lefthighkey); /* split's done */ + TRACE_POSTGRESQL_NBTREE_PAGE_SPLIT(origpagenumber); + return rbuf; } diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c index 014faa1622f..e384354acee 100644 --- a/src/backend/access/nbtree/nbtutils.c +++ b/src/backend/access/nbtree/nbtutils.c @@ -24,6 +24,7 @@ #include "common/int.h" #include "lib/qunique.h" #include "miscadmin.h" +#include "pg_trace.h" #include "storage/lwlock.h" #include "storage/subsystems.h" #include "utils/datum.h" @@ -737,6 +738,7 @@ _bt_truncate(Relation rel, IndexTuple lastleft, IndexTuple firstright, if (keepnatts <= nkeyatts) { BTreeTupleSetNAtts(pivot, keepnatts, false); + TRACE_POSTGRESQL_NBTREE_PAGE_TRUNCATE(nkeyatts - keepnatts); return pivot; } diff --git a/src/backend/utils/probes.d b/src/backend/utils/probes.d index 1929521c6a5..d827ed0201c 100644 --- a/src/backend/utils/probes.d +++ b/src/backend/utils/probes.d @@ -91,4 +91,7 @@ provider postgresql { probe wal__switch(); probe wal__buffer__write__dirty__start(); probe wal__buffer__write__dirty__done(); + + probe nbtree__page__split(BlockNumber); + probe nbtree__page__truncate(int); }; base-commit: 298bdd379552148f6043b4595374a7a6fbdd13c3 -- 2.52.0