Re: Tracking last scan time
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Dave Page <dpage@pgadmin.org>
Cc: Matthias van de Meent <boekewurm+postgres@gmail.com>, PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2022-09-06T15:53:25Z
Lists: pgsql-hackers
Hi, On 2022-09-06 14:15:56 +0100, Dave Page wrote: > Vik and I looked at this a little, and found that we actually don't have > generally have GetCurrentTransactionStopTimestamp() at this point - a > simple 'select * from pg_class' will result in 9 passes of this code, none > of which have xactStopTimestamp != 0. Huh, pgstat_report_stat() used GetCurrentTransactionStopTimestamp() has used for a long time. Wonder when that was broken. Looks like it's set only when a xid is assigned. We should fix this. > After discussing it a little, we came to the conclusion that for the stated > use case, xactStartTimestamp is actually accurate enough, provided that we > only ever update it with a newer value. It would only likely be in extreme > edge-cases where the difference between start and end transaction time > would have any bearing on whether or not one might drop a table/index for > lack of use. I don't at all agree with this. Since we already use GetCurrentTransactionStopTimestamp() in this path we should fix it. Greetings, Andres Freund
Commits
-
Fix initialization of pg_stat_get_lastscan()
- d7744d50a539 16.0 landed
-
pgstat: Track time of the last scan of a relation
- c037471832e1 16.0 landed
-
Have GetCurrentTransactionStopTimestamp() set xactStopTimestamp if unset
- 309b2cf2433d 16.0 landed