Hello,
anyone can help on this matter, Alessandro highlighted?

Thanks a lot,
Nicola


2017-12-16 13:40 GMT+01:00 Alessandro Aste <alessandro.a...@gtt.net>:

> Stephen, Rene - Thanks!
>
> Our experience teach us that above 20% of free space performance start to
> seriously deteriorate.  I'm not sure if this is related to index or table
> fragmentation. We'll do our homework and we'll try to discover more.
>
> However we have identified a process potentially causing the free space
> spike high but it's not related to long running transactions modifying
> (update, insert) on those tables. What DEV is currently doing is create a
> sort of de-normalized cache table  like this:
> * tablename is the table with the free space issue
>
> INSERT INTO cache_table
> SELECT *, table2.<col>, ...table<N>.col  FROM tablename
> JOIN table2 on ...
> ...
> ..
> JOIN  table<N> on....
>
> So no updates/inserts/deletes to tablename are involved but that query may
> run for 15 (this is the AVG more or less)  minutes holding an ACCESS SHARE
> lock (I guess).
>
> We are wondering why we have that spike if we are not modifying the
> relation and what we can suggest DEV from the query/db perspective to
> alleviate/fix the issue.
>
> Again, thanks so much.
>
>
>
> Thanks and kind regards
> Aste - alessandro.a...@gtt.net
>
> -----Original Message-----
> From: Stephen Frost [mailto:sfr...@snowman.net]
> Sent: 14 December 2017 16:13
> To: Nicola Contu <nicola.co...@gmail.com>
> Cc: Rene Romero Benavides <rene.romer...@gmail.com>; pgsql-general@lists.
> postgresql.org; Alessandro Aste <alessandro.a...@gtt.net>
> Subject: Re: pgstattuple free_percent to high
>
> Greetings Nicola,
>
> * Nicola Contu (nicola.co...@gmail.com) wrote:
> > I think tuning the autovacuum settings may increase performances and
> > remove dead_tuples but as far as I know, the autovacuum runs a vacuum
> analyze.
> > The vacuum analyze won't touch the free_percent of the table.
>
> That's not entirely accurate.  If all of the free space is at the *end* of
> the relation then autovacuum will attempt to lock the relation and truncate
> the table to give that free space back to the OS.
>
> On a table where all of the rows are regularly updated, eventually the
> "live" data should end up towards the front of the relation and the end of
> the relation will be all dead tuples, allowing the truncate to happen.  If
> you have tuples at the end of the relation that aren't ever updated but
> they're "live" then we won't be able to truncate.
>
> The pg_freespacemap extension can be useful to see where the free space is
> in the relation.
>
> There are a few tools out there that aren't part of core PostgreSQL that
> you could consider using such as pg_repack and pg_squeeze.
>
> > So I'm trying to find a way to adjust the free percent for some tables
> > without doing a manually full vacuum.
> > We are now monitoring the free percent, so we may find the part of the
> > code that can increase that value, but was wondering if there is
> > anything on the postgres side to resolve this problem.
>
> Having some free space in the relation isn't a 'problem' and is a good
> thing because it means that new rows (from either INSERTs or UPDATEs) have
> a place to go that doesn't require extending the relation (which requires
> an additional lock as well as some additional work).  As for how much free
> space is good to have and how much is too much depends on the specific
> workload.
>
> Thanks!
>
> Stephen
>

Reply via email to