Index FSMs needs to be vacuumed as well. Report by Jeff Davis.
This commit is contained in:
parent
557faa4fb3
commit
89f373bf5b
@ -8,7 +8,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/access/gin/ginvacuum.c,v 1.22 2008/09/30 10:52:10 heikki Exp $
|
* $PostgreSQL: pgsql/src/backend/access/gin/ginvacuum.c,v 1.23 2008/10/06 08:04:11 heikki Exp $
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -744,6 +744,9 @@ ginvacuumcleanup(PG_FUNCTION_ARGS)
|
|||||||
totFreePages = totFreePages - stats->pages_removed;
|
totFreePages = totFreePages - stats->pages_removed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Finally, vacuum the FSM */
|
||||||
|
IndexFreeSpaceMapVacuum(info->index);
|
||||||
|
|
||||||
stats->pages_free = totFreePages;
|
stats->pages_free = totFreePages;
|
||||||
|
|
||||||
if (needLock)
|
if (needLock)
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/access/gist/gistvacuum.c,v 1.37 2008/09/30 10:52:10 heikki Exp $
|
* $PostgreSQL: pgsql/src/backend/access/gist/gistvacuum.c,v 1.38 2008/10/06 08:04:11 heikki Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -619,6 +619,9 @@ gistvacuumcleanup(PG_FUNCTION_ARGS)
|
|||||||
totFreePages = totFreePages - stats->std.pages_removed;
|
totFreePages = totFreePages - stats->std.pages_removed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Finally, vacuum the FSM */
|
||||||
|
IndexFreeSpaceMapVacuum(info->index);
|
||||||
|
|
||||||
/* return statistics */
|
/* return statistics */
|
||||||
stats->std.pages_free = totFreePages;
|
stats->std.pages_free = totFreePages;
|
||||||
if (needLock)
|
if (needLock)
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/access/nbtree/nbtree.c,v 1.162 2008/09/30 10:52:10 heikki Exp $
|
* $PostgreSQL: pgsql/src/backend/access/nbtree/nbtree.c,v 1.163 2008/10/06 08:04:11 heikki Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -574,6 +574,9 @@ btvacuumcleanup(PG_FUNCTION_ARGS)
|
|||||||
btvacuumscan(info, stats, NULL, NULL, 0);
|
btvacuumscan(info, stats, NULL, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Finally, vacuum the FSM */
|
||||||
|
IndexFreeSpaceMapVacuum(info->index);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* During a non-FULL vacuum it's quite possible for us to be fooled by
|
* During a non-FULL vacuum it's quite possible for us to be fooled by
|
||||||
* concurrent page splits into double-counting some index tuples, so
|
* concurrent page splits into double-counting some index tuples, so
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/storage/freespace/indexfsm.c,v 1.1 2008/09/30 10:52:13 heikki Exp $
|
* $PostgreSQL: pgsql/src/backend/storage/freespace/indexfsm.c,v 1.2 2008/10/06 08:04:11 heikki Exp $
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* NOTES:
|
* NOTES:
|
||||||
@ -90,3 +90,12 @@ IndexFreeSpaceMapTruncate(Relation rel, BlockNumber nblocks)
|
|||||||
{
|
{
|
||||||
FreeSpaceMapTruncateRel(rel, nblocks);
|
FreeSpaceMapTruncateRel(rel, nblocks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* IndexFreeSpaceMapVacuum - scan and fix any inconsistencies in the FSM
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
IndexFreeSpaceMapVacuum(Relation rel)
|
||||||
|
{
|
||||||
|
FreeSpaceMapVacuum(rel);
|
||||||
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/storage/indexfsm.h,v 1.1 2008/09/30 10:52:14 heikki Exp $
|
* $PostgreSQL: pgsql/src/include/storage/indexfsm.h,v 1.2 2008/10/06 08:04:11 heikki Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -16,12 +16,12 @@
|
|||||||
|
|
||||||
#include "utils/rel.h"
|
#include "utils/rel.h"
|
||||||
|
|
||||||
extern void InitIndexFreeSpaceMap(Relation rel);
|
|
||||||
|
|
||||||
extern BlockNumber GetFreeIndexPage(Relation rel);
|
extern BlockNumber GetFreeIndexPage(Relation rel);
|
||||||
extern void RecordFreeIndexPage(Relation rel, BlockNumber page);
|
extern void RecordFreeIndexPage(Relation rel, BlockNumber page);
|
||||||
extern void RecordUsedIndexPage(Relation rel, BlockNumber page);
|
extern void RecordUsedIndexPage(Relation rel, BlockNumber page);
|
||||||
|
|
||||||
|
extern void InitIndexFreeSpaceMap(Relation rel);
|
||||||
extern void IndexFreeSpaceMapTruncate(Relation rel, BlockNumber nblocks);
|
extern void IndexFreeSpaceMapTruncate(Relation rel, BlockNumber nblocks);
|
||||||
|
extern void IndexFreeSpaceMapVacuum(Relation rel);
|
||||||
|
|
||||||
#endif /* INDEXFSM_H */
|
#endif /* INDEXFSM_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user