From: | Tatsuo Ishii <t-ishii(at)sra(dot)co(dot)jp> |
---|---|
To: | Mike Mascari <mascarim(at)yahoo(dot)com> |
Cc: | Hiroshi Inoue <Inoue(at)tpf(dot)co(dot)jp>, pgsql-hackers(at)postgreSQL(dot)org |
Subject: | Re: [HACKERS] vacuum process size |
Date: | 1999-08-24 01:12:37 |
Message-ID: | 199908240112.KAA01811@ext16.sra.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Mike,
> At the very least, couldn't vc_vpinsert() double
> vpl->vpl_num_pages whenever vpl->vpl_num_pages
> needs to be expanded instead of expanding linearly
> by PG_NPAGEDESC, or by the original 100?
I have tested your idea and found even more improved memory usage
(86MB vs. 43MB). Standard vacuum consumes as much as 478MB memory with
deleting 5000000 tuples that would not be acceptable for most
configurations. I think we should fix this as soon as possible. If
there's no objection, I will commit included patches to the stable
tree (seems Tom has more aggressive idea, so I'll leave the current
tree as it is).
---
Tatsuo Ishii
-------------------------------------------------------------------
*** vacuum.c.orig Sat Jul 3 09:32:40 1999
--- vacuum.c Tue Aug 24 10:08:43 1999
***************
*** 2519,2530 ****
static void
vc_vpinsert(VPageList vpl, VPageDescr vpnew)
{
/* allocate a VPageDescr entry if needed */
if (vpl->vpl_num_pages == 0)
! vpl->vpl_pagedesc = (VPageDescr *) palloc(100 * sizeof(VPageDescr));
! else if (vpl->vpl_num_pages % 100 == 0)
! vpl->vpl_pagedesc = (VPageDescr *) repalloc(vpl->vpl_pagedesc, (vpl->vpl_num_pages + 100) * sizeof(VPageDescr));
vpl->vpl_pagedesc[vpl->vpl_num_pages] = vpnew;
(vpl->vpl_num_pages)++;
--- 2519,2538 ----
static void
vc_vpinsert(VPageList vpl, VPageDescr vpnew)
{
+ #define PG_NPAGEDESC 1024
+ static uint num_pages;
/* allocate a VPageDescr entry if needed */
if (vpl->vpl_num_pages == 0)
! {
! vpl->vpl_pagedesc = (VPageDescr *) palloc(PG_NPAGEDESC * sizeof(VPageDescr));
! num_pages = PG_NPAGEDESC;
! }
! else if (vpl->vpl_num_pages >= num_pages)
! {
! num_pages *= 2;
! vpl->vpl_pagedesc = (VPageDescr *) repalloc(vpl->vpl_pagedesc, num_pages * sizeof(VPageDescr));
! }
vpl->vpl_pagedesc[vpl->vpl_num_pages] = vpnew;
(vpl->vpl_num_pages)++;
From | Date | Subject | |
---|---|---|---|
Next Message | Hub.Org News Admin | 1999-08-24 02:35:40 | |
Previous Message | Hiroshi Inoue | 1999-08-23 23:53:13 | RE: [HACKERS] Caution: tonight's commits force initdb |