Re: 7.3.1 takes long time to vacuum table? - Mailing list pgsql-general

From Mark Cave-Ayland
Subject Re: 7.3.1 takes long time to vacuum table?
Date
Msg-id C1379626F9C09A4C821D6977AA6A545706329D@webbased8.wb8.webbased.co.uk
Whole thread Raw
In response to 7.3.1 takes long time to vacuum table?  ("Mark Cave-Ayland" <m.cave-ayland@webbased.co.uk>)
Responses Re: 7.3.1 takes long time to vacuum table?  ("Shridhar Daithankar<shridhar_daithankar@persistent.co.in>" <shridhar_daithankar@persistent.co.in>)
Re: 7.3.1 takes long time to vacuum table?  (Martijn van Oosterhout <kleptog@svana.org>)
List pgsql-general
Hi Martijn,

Thanks again for your reply.

> -----Original Message-----
> From: Martijn van Oosterhout [mailto:kleptog@svana.org]
> Sent: 19 February 2003 12:11
> To: Mark Cave-Ayland
> Cc: PostgreSQL General
> Subject: Re: [GENERAL] 7.3.1 takes long time to vacuum table?
>
> On Wed, Feb 19, 2003 at 11:03:12AM -0000, Mark Cave-Ayland wrote:
> > Ok, I've managed to do that.... offset just seems to keep jumping
around
> > though, not much of a specific pattern... although it does seem to
be
> > reading from 2 separate files :( But what IS interesting is that
between
> > each seek(), postgres does 2 reads of 8k (which I guess is a page)
and
> > then 4 writes! This I don't understand? Surely given the memory
> > parameters then it should read as many pages into memory as
possible,
> > sort them, then seek back and write them? What appears to be
happening
> > is that it is only one or two pages are being moved at a time which
> > seems really inefficient.
>
> Hmm, odd. The offset is going *backwards*. It's starting at 981934080
and
> made it down to 969719808. It looks like it's reading each page. I
don't
> think I need to tell you that from a caching point of view, it's not
> probably
> not as good as going forward.

Backwards? Ouch I guess that will break most caching strategies! But as
I said before, do you know why it only appears to be moving one or two
pages at a time before seeking again???

> How long did it take to get that trace? Also, what are file
descriptors
> 58,
> 97 and 114?

The trace lasted about a couple of minutes. I've listed the filesystems
from /proc and uploaded them to
http://www.infomapper.com/strace/fd.log.txt for you to look - I have a
feeling you would find it useful to see the total number of files open
in terms of their size and quantity....

> > The vacuum has emitted a line of statistics within the first few
hours
> > which reads the following:
> >
> > INFO:  --Relation public.res--
> > INFO:  Pages 9167290: Changed 5366493, reaped 6000857, Empty 0, New
0;
> > Tup 72475389: Vac 105298234, Keep/VTL 0/0, UnUsed 221144, MinLen 72,
> > MaxLen 727; Re-using: Free/Avail. Space 48478844644/48455035400;
> > EndEmpty/Avail. Pages 0/8458521.
> >         CPU 733.62s/151.22u sec elapsed 4656.51 sec.
>
> Ok, that means it has finished the vacuum stage (since that's printed
at
> the
> end of scan_heap). It's now going through the heap compacting. From
that
> output it appears that your table is around 75Gig (9 million 8K
pages)!
> You're into the repair_frag stage where indeed it scans through the
table
> backwards.

Hmmm, a little big bigger than I was expecting, although I guess that
contains old and new pages. Here is the select result:

SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;
             relname             | relpages
---------------------------------+----------
 res                        |  5586167

...so at 8Kb/page then that's about 42Gb.


> While I can see the argument for going backwards, from a caching
> perspective
> I think it's terrible. Especially in the case where the entire table
has
> been replaced, the entire exercise becomes a very expensive copy
> operation.

Agreed! If it ruins any caching then in my view it's something that has
to change in order to keep performance. While there may be a penalty to
pay on smaller tables, the benefits of caching would more than make up
for the cost of going forwards - imagine how slow CPUs would be if
everything was a cache miss....

> Let me know what those file descriptors point to and we can probably
work
> out how far along it is.

Yes please, that would be really useful for us to know.


Cheers,

Mark.

---

Mark Cave-Ayland
Webbased Ltd.
Tamar Science Park
Derriford
Plymouth
PL6 8BX
England

Tel: +44 (0)1752 764445
Fax: +44 (0)1752 764446


This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender. You
should not copy it or use it for any purpose nor disclose or distribute
its contents to any other person.


pgsql-general by date:

Previous
From: "Mario Weilguni"
Date:
Subject: Re: SQL query...
Next
From: Marcus Claesson
Date:
Subject: Re: How do I get the database connections to close down?