Re: [HACKERS] vacuum process size

Поиск
Список
Период
Сортировка
От Tatsuo Ishii
Тема Re: [HACKERS] vacuum process size
Дата
Msg-id 199908240112.KAA01811@ext16.sra.co.jp
обсуждение исходный текст
Ответ на RE: [HACKERS] vacuum process size  (Mike Mascari <mascarim@yahoo.com>)
Ответы Re: [HACKERS] vacuum process size  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: [HACKERS] vacuum process size  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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)++; 


В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Hiroshi Inoue"
Дата:
Сообщение: RE: [HACKERS] Caution: tonight's commits force initdb
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: [HACKERS] vacuum process size