monitoring tuple_count vs dead_tuple_count

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
I wrote a script that monitored the size of a specific table of mine(dead tuples_mb vs live tuples_mb). The script run a query on pg_stattuple every 15 minutes : select * from pg_stattuple('table_name'). I know that every night there is a huge delete query that deletes most of the table`s content. In addition, I set the following parameters for the table : 
toast.autovacuum_vacuum_scale_factor=0,
 toast.autovacuum_vacuum_threshold=10000, toast.autovacuum_vacuum_cost_limit=10000
toast.autovacuum_vacuum_cost_delay=5    

After a week of monitoring I generates a csv of the results and I created a graph from that data.  However, the graph that I created confused me very much.
A small sample of all the data that I gathered : 
date toasted_live_tup_size_MB toasted_dead_tup_size_mb
6/16/19 0:00 58.8537941 25.68760395
6/16/19 0:15 8.725102425 25.02167416
6/16/19 0:30 8.668716431 25.08410168
6/16/19 0:45 8.810066223 24.94327927
6/16/19 1:00 8.732183456 25.02435684
6/16/19 1:15 8.67656517 20.01097107
6/16/19 1:30 9.573832512 20.76298809
6/16/19 1:45 9.562319756 20.7739706
6/16/19 2:00 9.567030907 21.01560402
6/16/19 2:15 9.576253891 70.62042999
6/16/19 2:30 9.715950966 492.2445602
6/16/19 2:45 9.59837532 801.455843
6/16/19 3:00 9.599774361 1110.201434
6/16/19 3:15 9.606671333 1402.255548
6/16/19 3:30 9.601698875 1698.487226
6/16/19 3:45 9.606934547 2003.051514
6/16/19 4:00 9.600641251 2307.625901
6/16/19 4:15 9.61320591 2612.196963
6/16/19 4:30 9.606646538 2916.773588
6/16/19 4:45 9.61294651 3221.337314
6/16/19 5:00 9.607636452 3525.914713
6/16/19 5:15 5.447218895 3826.313025
6/16/19 5:30 9.621054649 4130.883012
6/16/19 5:45 11.48730659 4433.29188
6/16/19 6:00 7.311745644 4742.039024
6/16/19 6:15 12.31321144 5135.994677
6/16/19 6:30 12.12382507 5671.512811
6/16/19 6:45 8.029448509 6171.677253
6/16/19 7:00 7.955677986 6666.846472
6/16/19 7:15 12.21173954 7161.934807
6/16/19 7:30 7.96325779 7661.273341
6/16/19 7:45 12.20623493 8156.362462
6/16/19 8:00 7.960205078 8655.704986
6/16/19 8:15 12.13819695 33.60424519
6/16/19 8:30 12.21746635 57.87192154
6/16/19 8:45 12.2179966 33.52415848
6/16/19 9:00 12.14417744 33.60204792
6/16/19 9:15 12.21954441 26.85134888


As you can see in this example, The size of the dead rows from 2am until 8am increased while there isnt any change in the size of the live rows. During that time I know that there were a delete query that run and deleted a lot of rows. That is why I'm confused here, if more dead rows are generated because of a delete, it means that number of live_tuples should be decreased but it doesnt happen here. Any idea why ?


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux