Re: Trigger more frequent autovacuums - Mailing list pgsql-hackers

From wenhui qiu
Subject Re: Trigger more frequent autovacuums
Date
Msg-id CAGjGUALtxAT=YAAJmyNCp4voSuTY5fi4gfUi4a+z2Nwbf54=MQ@mail.gmail.com
Whole thread Raw
In response to Re: Trigger more frequent autovacuums  (wenhui qiu <qiuwenhuifx@gmail.com>)
Responses Re: Trigger more frequent autovacuums
List pgsql-hackers
Sorry ,A wrong version of debug pcnt_visibletuples ,kindly please check the v3 attachment 

On Fri, Mar 7, 2025 at 5:37 PM wenhui qiu <qiuwenhuifx@gmail.com> wrote:
Hi 
   The more accurate data I've found is tabentry->live_tuples; provides the second version

#Here's a simple test I did

test=# select count(*) from join1;
  count
---------
 2289001
(1 row)


test=# update join1 set name=md5(now()::text) where id<1000000;
UPDATE 1938700
test=# select 1938700/2289001;
 ?column?
----------
        0
(1 row)

test=# select 1938700/2289001::float;
      ?column?
--------------------
 0.8469633696097119
(1 row)

test=#



test=# select count(*) from join1;
  count
---------
 2289001
(1 row)
test=# update join1 set name=md5(now()::text) where id<=80000;
UPDATE 159901
test=# select 159901/2289001::float;
      ?column?
---------------------
 0.06985623859491542
(1 row)


test=# select * from pg_stat_all_tables where relname='join1';
-[ RECORD 1 ]----------+------------------------------
relid                  | 16385
schemaname             | public
relname                | join1
seq_scan               | 17
last_seq_scan          | 2025-03-07 15:34:02.793659+08
seq_tup_read           | 14994306
idx_scan               | 7
last_idx_scan          | 2025-03-07 15:34:23.404788+08
idx_tup_fetch          | 500281
n_tup_ins              | 2289001
n_tup_upd              | 2268604
n_tup_del              | 0
n_tup_hot_upd          | 399
n_tup_newpage_upd      | 2268205
n_live_tup             | 2286701
n_dead_tup             | 159901
n_mod_since_analyze    | 159901
n_ins_since_vacuum     | 0
last_vacuum            | 2025-03-06 18:18:11.318419+08
last_autovacuum        | 2025-03-07 15:25:53.055576+08
last_analyze           | 2025-03-06 18:18:11.424253+08
last_autoanalyze       | 2025-03-07 15:25:53.456656+08
vacuum_count           | 3
autovacuum_count       | 3
analyze_count          | 2
autoanalyze_count      | 4
total_vacuum_time      | 205
total_autovacuum_time  | 2535
total_analyze_time     | 203
total_autoanalyze_time | 1398

test=#
test=# update join1 set name=md5(now()::text) where id<=80000;
UPDATE 159901


test=# \x
Expanded display is on.
test=# select (n_live_tup)/(n_live_tup+n_dead_tup)::float from pg_stat_all_tables where relname='join1';
-[ RECORD 1 ]----------------
?column? | 0.8774142777358045

test=# select *  from pg_stat_all_tables where relname='join1';
-[ RECORD 1 ]----------+------------------------------
relid                  | 16385
schemaname             | public
relname                | join1
seq_scan               | 17
last_seq_scan          | 2025-03-07 15:34:02.793659+08
seq_tup_read           | 14994306
idx_scan               | 8
last_idx_scan          | 2025-03-07 15:46:38.331795+08
idx_tup_fetch          | 660182
n_tup_ins              | 2289001
n_tup_upd              | 2428505
n_tup_del              | 0
n_tup_hot_upd          | 424
n_tup_newpage_upd      | 2428081
n_live_tup             | 2289001
n_dead_tup             | 319802
n_mod_since_analyze    | 0
n_ins_since_vacuum     | 0
last_vacuum            | 2025-03-06 18:18:11.318419+08
last_autovacuum        | 2025-03-07 15:25:53.055576+08
last_analyze           | 2025-03-06 18:18:11.424253+08
last_autoanalyze       | 2025-03-07 15:47:35.950932+08
vacuum_count           | 3
autovacuum_count       | 3
analyze_count          | 2
autoanalyze_count      | 5
total_vacuum_time      | 205
total_autovacuum_time  | 2535
total_analyze_time     | 203
total_autoanalyze_time | 1770

test=#
tail -n 1000 postgresql-Fri_17.csv |grep join1
2025-03-07 17:30:12.782 +08,,,755739,,67cabca4.b881b,3,,2025-03-07 17:30:12 +08,2017/2,0,DEBUG,00000,"vacthresh: 457850.218750,anlthresh: 228950.109375, the join1 has 2289001.000000 reltuples, pcnt_unfrozen: 1.000000, pcnt_visibletuples: 0.877414 ",,,,,,,,,"","autovacuum worker",,0
2025-03-07 17:31:12.803 +08,,,756028,,67cabce0.b893c,3,,2025-03-07 17:31:12 +08,2003/4,0,DEBUG,00000,"vacthresh: 457850.218750,anlthresh: 228950.109375, the join1 has 2289001.000000 reltuples, pcnt_unfrozen: 1.000000, pcnt_visibletuples: 0.877414 ",,,,,,,,,"","autovacuum worker",,0
2025-03-07 17:32:12.822 +08,,,756405,,67cabd1c.b8ab5,3,,2025-03-07 17:32:12 +08,2006/4,0,DEBUG,00000,"vacthresh: 457850.218750,anlthresh: 228950.109375, the join1 has 2289001.000000 reltuples, pcnt_unfrozen: 1.000000, pcnt_visibletuples: 0.877414 ",,,,,,,,,"","autovacuum worker",,0
2025-03-07 17:33:12.842 +08,,,757026,,67cabd58.b8d22,3,,2025-03-07 17:33:12 +08,2009/4,0,DEBUG,00000,"vacthresh: 457850.218750,anlthresh: 228950.109375, the join1 has 2289001.000000 reltuples, pcnt_unfrozen: 1.000000, pcnt_visibletuples: 0.877414 ",,,,,,,,,"","autovacuum worker",,0

On Fri, Mar 7, 2025 at 2:22 PM wenhui qiu <qiuwenhuifx@gmail.com> wrote:
HI Nathan Bossart Melanie Plageman

Firstly, congratulations on the submission of this path:https://commitfest.postgresql.org/patch/5320/

vacthresh = (float4) vac_base_thresh + vac_scale_factor * reltuples;
anlthresh = (float4) anl_base_thresh + anl_scale_factor * reltuples;
vacinsthresh = (float4) vac_ins_base_thresh + vac_ins_scale_factor * reltuples;
These three calculations have already been optimised for two of them, and with this patch, we have the key data pcnt_unfrozen, I think we can also consider applying it to the vacthresh and anlthresh calculations, and I've added a new pcnt_unrelallvisible parameter with reference to pcnt_unfrozen, so I'm not sure if it's a good idea for me to use it. I'd like to hear your opinions on this.
#Here's a simple test I did
test=# select count(*) from join1;
  count
---------
 2289001
(1 row)

test=# update join1 set name=md5(now()::text) where id<=20000;
UPDATE 70001
test=#

2025-03-07 14:03:33.968 +08,,,607191,,67ca8c35.943d7,2,,2025-03-07 14:03:33 +08,2005/2,0,DEBUG,00000,"vacthresh: 222674.750000,anlthresh: 11371.118164, the j
oin1 has 2291275.000000 reltuples, pcnt_unfrozen: 0.485810, pcnt_unrelallvisible: 0.049410 ",,,,,,,,,"","autovacuum worker",,0
    
Attachment

pgsql-hackers by date:

Previous
From: Bertrand Drouvot
Date:
Subject: Re: Log connection establishment timings
Next
From: Ranier Vilela
Date:
Subject: Re: Simplify the logic a bit (src/bin/scripts/reindexdb.c)