Skip to content

Commit 3aa3760

Browse files
committed
Move increase FSM warning to after lazy_truncate_heap() because the
function might reduce the number of free pages in the table. Recommend VACUUM FULL only if 20% free. Simon Riggs.
1 parent 6f519ad commit 3aa3760

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/backend/commands/vacuumlazy.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
*
3737
*
3838
* IDENTIFICATION
39-
* $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.83 2007/02/04 03:10:55 momjian Exp $
39+
* $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.84 2007/02/21 22:15:21 momjian Exp $
4040
*
4141
*-------------------------------------------------------------------------
4242
*/
@@ -180,6 +180,16 @@ lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt)
180180
/* Update shared free space map with final free space info */
181181
lazy_update_fsm(onerel, vacrelstats);
182182

183+
if (vacrelstats->tot_free_pages > MaxFSMPages)
184+
ereport(WARNING,
185+
(errmsg("relation \"%s.%s\" contains more than \"max_fsm_pages\" pages with useful free space",
186+
get_namespace_name(RelationGetNamespace(onerel)),
187+
RelationGetRelationName(onerel)),
188+
errhint("Consider%sincreasing the configuration parameter \"max_fsm_pages\".",
189+
/* Only suggest VACUUM FULL if 20% free */
190+
(vacrelstats->tot_free_pages > vacrelstats->rel_pages * 0.20
191+
? " using VACUUM FULL on this relation or ": " "))));
192+
183193
/* Update statistics in pg_class */
184194
vac_update_relstats(RelationGetRelid(onerel),
185195
vacrelstats->rel_pages,
@@ -507,13 +517,6 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
507517
vacrelstats->tot_free_pages,
508518
empty_pages,
509519
pg_rusage_show(&ru0))));
510-
511-
if (vacrelstats->tot_free_pages > MaxFSMPages)
512-
ereport(WARNING,
513-
(errmsg("relation \"%s.%s\" contains more than \"max_fsm_pages\" pages with useful free space",
514-
get_namespace_name(RelationGetNamespace(onerel)),
515-
relname),
516-
errhint("Consider using VACUUM FULL on this relation or increasing the configuration parameter \"max_fsm_pages\".")));
517520
}
518521

519522

0 commit comments

Comments
 (0)