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:
@ -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);
|
||||
|
Reference in New Issue
Block a user