Re: System catalog vacuum issues - Mailing list pgsql-hackers

From Jim Nasby
Subject Re: System catalog vacuum issues
Date
Msg-id 520BCC0B.3080307@nasby.net
Whole thread Raw
In response to Re: System catalog vacuum issues  (Vlad Arkhipov <arhipov@dc.baikal.ru>)
List pgsql-hackers
On 8/14/13 12:31 AM, Vlad Arkhipov wrote:
> I used to use VACUUM FULL periodically to resolve the issue, but the problem arises again in 2-3 months.
> Here is the statistics (from pgstattuple). I run VACUUM FULL on 2013-08-07.

How much non-temporary DDL do you do? It's possible that you end up with a tuple at the end of the table for a
non-temporaryobject. One of those would stay valid for quite some time, and if you're unlucky then you'll end up with
anotherlong-lived row farther down the table, etc, etc.
 

Depending on how frequently you're creating temp objects, autovac might not be able to keep up. Assuming that a manual
vacuumdoesn't take too long it might be a good idea to cron a manual vacuum (NOT FULL) of that table once a minute.
 

> dcdb=# select date, relpages, reltuples, table_len, tuple_count, tuple_percent, dead_tuple_count, dead_tuple_len,
free_space,free_percent, autovacuum_count from public.table_statistics where relname = 'pg_attribute' order by date;
 
>      date    | relpages | reltuples | table_len | tuple_count | tuple_percent | dead_tuple_count | dead_tuple_len |
free_space| free_percent | autovacuum_count
 
>
------------+----------+-----------+-----------+-------------+---------------+------------------+----------------+------------+--------------+------------------
>   2013-08-08 |    39029 |    109096 | 319725568 |       37950 | 1.66 |            52540 |        7355600 |  296440048
|       92.72 |             6359
 
>   2013-08-09 |    12382 |     95848 | 101433344 |       38232 | 5.28 |            57443 |        8042020 |   83862864
|       82.68 |             6711
 
>   2013-08-10 |    11365 |    105073 |  93102080 |       37789 | 5.68 |            65599 |        9183860 |   74483104
|          80 |             7002
 
>   2013-08-12 |     9447 |     95289 |  77389824 |       37811 | 6.84 |            57154 |        8001560 |   60479736
|       78.15 |             7161
 
>   2013-08-13 |    47841 |     82877 | 391913472 |       38536 | 1.38 |            30461 |        4264540 |  369093756
|       94.18 |             7347
 
>   2013-08-14 |    70265 |    104926 | 575610880 |       38838 | 0.94 |            34649 |        4850860 |  546449480
|       94.93 |             7398
 
> (6 rows)
>
> Autovacuum is running on this table, however it keeps growing.
>
> On 08/06/2013 09:35 PM, Tom Lane wrote:
>> Vlad Arkhipov <arhipov@dc.baikal.ru> writes:
>>> On 08/06/2013 04:26 PM, Sergey Konoplev wrote:
>>>> What pgstattuple shows on this table?
>>> dcdb=# select * from pgstattuple('pg_catalog.pg_attribute');
>>>    table_len  | tuple_count | tuple_len | tuple_percent |
>>> dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space |
>>> free_percent
>>>
------------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
>>>    6363938816 |       48786 |   6830040 |          0.11 | 1459439 |
>>> 204321460 |               3.21 | 5939017376 | 93.32
>>> (1 row)
>> So the problem isn't so much that you have lots of dead tuples, it's that
>> the file is full of free space.  I suspect the key issue is that
>> autovacuum is unable to truncate the file because of too many concurrent
>> accesses.  There was a fix in 9.2.3 that was meant to ameliorate that
>> problem, but maybe that's not getting the job done for you.  Or maybe the
>> bloat we're looking at is left over from when you were running earlier
>> 9.2.x releases; in which case a one-time VACUUM FULL should fix it.
>>
>>             regards, tom lane


-- 
Jim C. Nasby, Data Architect                       jim@nasby.net
512.569.9461 (cell)                         http://jim.nasby.net



pgsql-hackers by date:

Previous
From: Jim Nasby
Date:
Subject: Re: StrategyGetBuffer optimization, take 2
Next
From: Tom Lane
Date:
Subject: Re: Incorrect information in src/backend/optimizer/README