Hi)
Thank you for your valuable feedback!

On 12.03.2026 18:28, Andrei Lepikhov wrote:

On 12/3/26 13:02, Andrei Lepikhov wrote:
On 9/3/26 16:46, Alena Rybakina wrote:
I discovered that my last patches were incorrectly formed. I updated the correct version.

I see that v29-0001-* is a quite separate feature itself at the moment. It makes sense to remove the commit message phrase for vm_new_frozen_pages and vm_new_visible_pages, introduced in later patches.
This patch itself looks good to me.

Since this patch is almost ready for commit, I reviewed it carefully. I noticed a documentation entry was missing, so I added it. Please see the attachment.
I have added it in the documentation in the extension that you have noticed before, but I agree with your suggestion to move it in the core patch.
While updating the patch file, I also made a few small adjustments, including changing the parameter order in the struct and VIEW. The commit message is also fixed.
Thank you) I agree with your fixes)

In addition, it makes sense to discuss how these parameters are supposed to be used. I see the following use cases:

1. Which tables have the most VM churn? - monitoring rev_all_visible_pages normalised on the table size and its average tuple width might expose the most suspicious tables (in terms of table statistics). 2. DML Skew. Dividing rev_all_visible_pages by the number of tuple updates/deletes, normalised by the average table and tuple sizes, might indicate whether changes are localised within the table. 3. IndexOnlyScan effectiveness. Considering the speed of rev_all_visible_pages change, normalised to the value of the relallvisible statistic, we may detect tables where Index-Only Scan might be inefficiently used.

Now it can be useful to track what table's pages are frozen by vacuum most.

By analyzing the ratio of frozen to unfrozen pages, you can see how well the balance is maintained. Ideally, this ratio should approach 1. If we have a higher ratio of unfrozen to frozen pages, it means the backand is frequently accessing the table, which could indicate that this table potentially requires attention to how well it's being handled by the vacuum. There may be unpredictability or even a seasonal trend — a page is frequently accessed only during certain periods (this is purely my observation). Also, if the ratio of frozen pages is higher, the vacuum may be configured too aggressively.

With the parameter that was included before (pg_class_relallfrozen and relallvisible https://github.com/MasaoFujii/postgresql/commit/99f8f3fbbc8f743290844e8c676d39dad11c5d5d) in the pg_stat_tables, I think I can provide isolation test to prove it - I can use my isolation test vacuum-extending-in-repetable-read.spec that I have added in the extension (ext_vacuum_statistics). What do you think?


Feel free to criticise it or add your own - I’m just a developer, not a DBA. Also, I’m not sure what use cases there are for the rev_all_frozen_pages parameter.

Also, I would ask you if you don't mind to review the code in the extension that I have provided to store and control vacuum statistics. No one has ever looked at it unfortunately and any feedback is valuable now.

In addition, I'm currently working on the parameter that can track some parts of statistics. For example, we can track only buffer or wal statistics. If you are interested, I'll send you the code on my github. However I have already noticed that it requires to add dynamical memory allocation based on the guc value. I know that it requires a lot of attention in development but it will help to save memory during saving statistics. What do you think about this idea? To be honest, it was suggested before in this thread and I'm trying to realize it.



Reply via email to