1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-14 08:21:07 +03:00

Cost based vacuum delay feature.

Jan
This commit is contained in:
Jan Wieck
2004-02-06 19:36:18 +00:00
parent 687d7cf355
commit f425b605f4
9 changed files with 189 additions and 8 deletions

View File

@ -12,7 +12,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/access/nbtree/nbtree.c,v 1.110 2004/02/03 17:34:02 tgl Exp $
* $PostgreSQL: pgsql/src/backend/access/nbtree/nbtree.c,v 1.111 2004/02/06 19:36:17 wieck Exp $
*
*-------------------------------------------------------------------------
*/
@ -586,6 +586,26 @@ btbulkdelete(PG_FUNCTION_ARGS)
CHECK_FOR_INTERRUPTS();
/*
* If we're called by a cost based vacuum, do the
* napping in case the balance exceeded the limit.
*/
if (VacuumCostActive && !InterruptPending &&
VacuumCostBalance >= VacuumCostLimit)
{
int msec;
msec = VacuumCostNaptime * VacuumCostBalance / VacuumCostLimit;
if (msec < VacuumCostNaptime * 4)
PG_MSLEEP(msec);
else
PG_MSLEEP(VacuumCostNaptime * 4);
VacuumCostBalance = 0;
CHECK_FOR_INTERRUPTS();
}
ndeletable = 0;
page = BufferGetPage(buf);
opaque = (BTPageOpaque) PageGetSpecialPointer(page);