diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2008-03-10 02:04:10 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2008-03-10 02:04:10 +0000 |
| commit | 3fcc7e8e1884c966e1a292a3caeb39cce06f61aa (patch) | |
| tree | 7728e9e3dabc64793e2450beb3b5e40f9a190a9c /src/backend/commands/vacuum.c | |
| parent | 9537739f7fcd3bafa2471b199297ec7ad7c935e7 (diff) | |
| download | postgresql-3fcc7e8e1884c966e1a292a3caeb39cce06f61aa.tar.gz | |
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
Diffstat (limited to 'src/backend/commands/vacuum.c')
| -rw-r--r-- | src/backend/commands/vacuum.c | 11 |
1 files changed, 5 insertions, 6 deletions
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++; } } |
