From 3fcc7e8e1884c966e1a292a3caeb39cce06f61aa Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 10 Mar 2008 02:04:10 +0000 Subject: Reduce memory consumption during VACUUM of large relations, by using FSMPageData (6 bytes) instead of PageFreeSpaceInfo (8 or 16 bytes) for the temporary array of page-free-space information. Itagaki Takahiro --- src/backend/commands/vacuum.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src/backend/commands/vacuum.c') diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 7e31ac452a..a073a1d68e 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -13,7 +13,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.365 2008/02/20 14:31:35 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.366 2008/03/10 02:04:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -3461,7 +3461,7 @@ vac_update_fsm(Relation onerel, VacPageList fraged_pages, int nPages = fraged_pages->num_pages; VacPage *pagedesc = fraged_pages->pagedesc; Size threshold; - PageFreeSpaceInfo *pageSpaces; + FSMPageData *pageSpaces; int outPages; int i; @@ -3477,8 +3477,7 @@ vac_update_fsm(Relation onerel, VacPageList fraged_pages, */ threshold = GetAvgFSMRequestSize(&onerel->rd_node); - pageSpaces = (PageFreeSpaceInfo *) - palloc(nPages * sizeof(PageFreeSpaceInfo)); + pageSpaces = (FSMPageData *) palloc(nPages * sizeof(FSMPageData)); outPages = 0; for (i = 0; i < nPages; i++) @@ -3493,8 +3492,8 @@ vac_update_fsm(Relation onerel, VacPageList fraged_pages, if (pagedesc[i]->free >= threshold) { - pageSpaces[outPages].blkno = pagedesc[i]->blkno; - pageSpaces[outPages].avail = pagedesc[i]->free; + FSMPageSetPageNum(&pageSpaces[outPages], pagedesc[i]->blkno); + FSMPageSetSpace(&pageSpaces[outPages], pagedesc[i]->free); outPages++; } } -- cgit v1.2.1