PostgreSQL Source Code git master
autovacuum.h File Reference
#include "storage/block.h"
Include dependency graph for autovacuum.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Enumerations

enum  AutoVacuumWorkItemType { AVW_BRINSummarizeRange }
 

Functions

bool AutoVacuumingActive (void)
 
void autovac_init (void)
 
void AutoVacWorkerFailed (void)
 
void AutoVacLauncherMain (char *startup_data, size_t startup_data_len) pg_attribute_noreturn()
 
void AutoVacWorkerMain (char *startup_data, size_t startup_data_len) pg_attribute_noreturn()
 
bool AutoVacuumRequestWork (AutoVacuumWorkItemType type, Oid relationId, BlockNumber blkno)
 
Size AutoVacuumShmemSize (void)
 
void AutoVacuumShmemInit (void)
 

Variables

PGDLLIMPORT bool autovacuum_start_daemon
 
PGDLLIMPORT int autovacuum_worker_slots
 
PGDLLIMPORT int autovacuum_max_workers
 
PGDLLIMPORT int autovacuum_work_mem
 
PGDLLIMPORT int autovacuum_naptime
 
PGDLLIMPORT int autovacuum_vac_thresh
 
PGDLLIMPORT int autovacuum_vac_max_thresh
 
PGDLLIMPORT double autovacuum_vac_scale
 
PGDLLIMPORT int autovacuum_vac_ins_thresh
 
PGDLLIMPORT double autovacuum_vac_ins_scale
 
PGDLLIMPORT int autovacuum_anl_thresh
 
PGDLLIMPORT double autovacuum_anl_scale
 
PGDLLIMPORT int autovacuum_freeze_max_age
 
PGDLLIMPORT int autovacuum_multixact_freeze_max_age
 
PGDLLIMPORT double autovacuum_vac_cost_delay
 
PGDLLIMPORT int autovacuum_vac_cost_limit
 
PGDLLIMPORT int AutovacuumLauncherPid
 
PGDLLIMPORT int Log_autovacuum_min_duration
 

Enumeration Type Documentation

◆ AutoVacuumWorkItemType

Enumerator
AVW_BRINSummarizeRange 

Definition at line 23 of file autovacuum.h.

24{
AutoVacuumWorkItemType
Definition: autovacuum.h:24
@ AVW_BRINSummarizeRange
Definition: autovacuum.h:25

Function Documentation

◆ autovac_init()

void autovac_init ( void  )

Definition at line 3279 of file autovacuum.c.

3280{
3282 return;
3283 else if (!pgstat_track_counts)
3285 (errmsg("autovacuum not started because of misconfiguration"),
3286 errhint("Enable the \"track_counts\" option.")));
3287 else
3289}
static void check_av_worker_gucs(void)
Definition: autovacuum.c:3403
bool autovacuum_start_daemon
Definition: autovacuum.c:117
int errhint(const char *fmt,...)
Definition: elog.c:1317
int errmsg(const char *fmt,...)
Definition: elog.c:1070
#define WARNING
Definition: elog.h:36
#define ereport(elevel,...)
Definition: elog.h:149
bool pgstat_track_counts
Definition: pgstat.c:204

References autovacuum_start_daemon, check_av_worker_gucs(), ereport, errhint(), errmsg(), pgstat_track_counts, and WARNING.

Referenced by PostmasterMain().

◆ AutoVacLauncherMain()

void AutoVacLauncherMain ( char *  startup_data,
size_t  startup_data_len 
)

◆ AutoVacuumingActive()

bool AutoVacuumingActive ( void  )

Definition at line 3225 of file autovacuum.c.

3226{
3228 return false;
3229 return true;
3230}

References autovacuum_start_daemon, and pgstat_track_counts.

Referenced by HandleAutoVacLauncherInterrupts(), LaunchMissingBackgroundProcesses(), and relation_needs_vacanalyze().

◆ AutoVacuumRequestWork()

bool AutoVacuumRequestWork ( AutoVacuumWorkItemType  type,
Oid  relationId,
BlockNumber  blkno 
)

Definition at line 3237 of file autovacuum.c.

3239{
3240 int i;
3241 bool result = false;
3242
3243 LWLockAcquire(AutovacuumLock, LW_EXCLUSIVE);
3244
3245 /*
3246 * Locate an unused work item and fill it with the given data.
3247 */
3248 for (i = 0; i < NUM_WORKITEMS; i++)
3249 {
3251
3252 if (workitem->avw_used)
3253 continue;
3254
3255 workitem->avw_used = true;
3256 workitem->avw_active = false;
3257 workitem->avw_type = type;
3258 workitem->avw_database = MyDatabaseId;
3259 workitem->avw_relation = relationId;
3260 workitem->avw_blockNumber = blkno;
3261 result = true;
3262
3263 /* done */
3264 break;
3265 }
3266
3267 LWLockRelease(AutovacuumLock);
3268
3269 return result;
3270}
#define NUM_WORKITEMS
Definition: autovacuum.c:272
static AutoVacuumShmemStruct * AutoVacuumShmem
Definition: autovacuum.c:303
Oid MyDatabaseId
Definition: globals.c:93
int i
Definition: isn.c:72
bool LWLockAcquire(LWLock *lock, LWLockMode mode)
Definition: lwlock.c:1168
void LWLockRelease(LWLock *lock)
Definition: lwlock.c:1781
@ LW_EXCLUSIVE
Definition: lwlock.h:114
AutoVacuumWorkItem av_workItems[NUM_WORKITEMS]
Definition: autovacuum.c:299
BlockNumber avw_blockNumber
Definition: autovacuum.c:269
AutoVacuumWorkItemType avw_type
Definition: autovacuum.c:264
const char * type

References AutoVacuumShmem, AutoVacuumShmemStruct::av_workItems, AutoVacuumWorkItem::avw_active, AutoVacuumWorkItem::avw_blockNumber, AutoVacuumWorkItem::avw_database, AutoVacuumWorkItem::avw_relation, AutoVacuumWorkItem::avw_type, AutoVacuumWorkItem::avw_used, i, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MyDatabaseId, NUM_WORKITEMS, and type.

Referenced by brininsert().

◆ AutoVacuumShmemInit()

void AutoVacuumShmemInit ( void  )

Definition at line 3315 of file autovacuum.c.

3316{
3317 bool found;
3318
3320 ShmemInitStruct("AutoVacuum Data",
3322 &found);
3323
3324 if (!IsUnderPostmaster)
3325 {
3326 WorkerInfo worker;
3327 int i;
3328
3329 Assert(!found);
3330
3335 memset(AutoVacuumShmem->av_workItems, 0,
3337
3338 worker = (WorkerInfo) ((char *) AutoVacuumShmem +
3340
3341 /* initialize the WorkerInfo free list */
3342 for (i = 0; i < autovacuum_worker_slots; i++)
3343 {
3345 &worker[i].wi_links);
3346 pg_atomic_init_flag(&worker[i].wi_dobalance);
3347 }
3348
3350
3351 }
3352 else
3353 Assert(found);
3354}
static void pg_atomic_init_u32(volatile pg_atomic_uint32 *ptr, uint32 val)
Definition: atomics.h:221
static void pg_atomic_init_flag(volatile pg_atomic_flag *ptr)
Definition: atomics.h:170
int autovacuum_worker_slots
Definition: autovacuum.c:118
Size AutoVacuumShmemSize(void)
Definition: autovacuum.c:3296
struct WorkerInfoData * WorkerInfo
Definition: autovacuum.c:241
#define MAXALIGN(LEN)
Definition: c.h:768
#define Assert(condition)
Definition: c.h:815
bool IsUnderPostmaster
Definition: globals.c:119
static void dlist_init(dlist_head *head)
Definition: ilist.h:314
static void dclist_push_head(dclist_head *head, dlist_node *node)
Definition: ilist.h:693
static void dclist_init(dclist_head *head)
Definition: ilist.h:671
void * ShmemInitStruct(const char *name, Size size, bool *foundPtr)
Definition: shmem.c:382
dclist_head av_freeWorkers
Definition: autovacuum.c:296
WorkerInfo av_startingWorker
Definition: autovacuum.c:298
pg_atomic_uint32 av_nworkersForBalance
Definition: autovacuum.c:300
dlist_head av_runningWorkers
Definition: autovacuum.c:297

References Assert, autovacuum_worker_slots, AutoVacuumShmem, AutoVacuumShmemSize(), AutoVacuumShmemStruct::av_freeWorkers, AutoVacuumShmemStruct::av_launcherpid, AutoVacuumShmemStruct::av_nworkersForBalance, AutoVacuumShmemStruct::av_runningWorkers, AutoVacuumShmemStruct::av_startingWorker, AutoVacuumShmemStruct::av_workItems, dclist_init(), dclist_push_head(), dlist_init(), i, IsUnderPostmaster, MAXALIGN, NUM_WORKITEMS, pg_atomic_init_flag(), pg_atomic_init_u32(), ShmemInitStruct(), and WorkerInfoData::wi_links.

Referenced by CreateOrAttachShmemStructs().

◆ AutoVacuumShmemSize()

Size AutoVacuumShmemSize ( void  )

Definition at line 3296 of file autovacuum.c.

3297{
3298 Size size;
3299
3300 /*
3301 * Need the fixed struct and the array of WorkerInfoData.
3302 */
3303 size = sizeof(AutoVacuumShmemStruct);
3304 size = MAXALIGN(size);
3306 sizeof(WorkerInfoData)));
3307 return size;
3308}
size_t Size
Definition: c.h:562
Size add_size(Size s1, Size s2)
Definition: shmem.c:488
Size mul_size(Size s1, Size s2)
Definition: shmem.c:505
static pg_noinline void Size size
Definition: slab.c:607

References add_size(), autovacuum_worker_slots, MAXALIGN, mul_size(), and size.

Referenced by AutoVacuumShmemInit(), and CalculateShmemSize().

◆ AutoVacWorkerFailed()

void AutoVacWorkerFailed ( void  )

Definition at line 1352 of file autovacuum.c.

1353{
1355}
@ AutoVacForkFailed
Definition: autovacuum.c:250
sig_atomic_t av_signal[AutoVacNumSignals]
Definition: autovacuum.c:294

References AutoVacForkFailed, AutoVacuumShmem, and AutoVacuumShmemStruct::av_signal.

Referenced by StartAutovacuumWorker().

◆ AutoVacWorkerMain()

void AutoVacWorkerMain ( char *  startup_data,
size_t  startup_data_len 
)

Definition at line 1374 of file autovacuum.c.

1375{
1376 sigjmp_buf local_sigjmp_buf;
1377 Oid dbid;
1378
1379 Assert(startup_data_len == 0);
1380
1381 /* Release postmaster's working memory context */
1383 {
1385 PostmasterContext = NULL;
1386 }
1387
1389 init_ps_display(NULL);
1390
1392
1393 /*
1394 * Set up signal handlers. We operate on databases much like a regular
1395 * backend, so we use the same signal handling. See equivalent code in
1396 * tcop/postgres.c.
1397 */
1399
1400 /*
1401 * SIGINT is used to signal canceling the current table's vacuum; SIGTERM
1402 * means abort and exit cleanly, and SIGQUIT means abandon ship.
1403 */
1405 pqsignal(SIGTERM, die);
1406 /* SIGQUIT handler was already set up by InitPostmasterChild */
1407
1408 InitializeTimeouts(); /* establishes SIGALRM handler */
1409
1410 pqsignal(SIGPIPE, SIG_IGN);
1412 pqsignal(SIGUSR2, SIG_IGN);
1414 pqsignal(SIGCHLD, SIG_DFL);
1415
1416 /*
1417 * Create a per-backend PGPROC struct in shared memory. We must do this
1418 * before we can use LWLocks or access any shared memory.
1419 */
1420 InitProcess();
1421
1422 /* Early initialization */
1423 BaseInit();
1424
1425 /*
1426 * If an exception is encountered, processing resumes here.
1427 *
1428 * Unlike most auxiliary processes, we don't attempt to continue
1429 * processing after an error; we just clean up and exit. The autovac
1430 * launcher is responsible for spawning another worker later.
1431 *
1432 * Note that we use sigsetjmp(..., 1), so that the prevailing signal mask
1433 * (to wit, BlockSig) will be restored when longjmp'ing to here. Thus,
1434 * signals other than SIGQUIT will be blocked until we exit. It might
1435 * seem that this policy makes the HOLD_INTERRUPTS() call redundant, but
1436 * it is not since InterruptPending might be set already.
1437 */
1438 if (sigsetjmp(local_sigjmp_buf, 1) != 0)
1439 {
1440 /* since not using PG_TRY, must reset error stack by hand */
1441 error_context_stack = NULL;
1442
1443 /* Prevents interrupts while cleaning up */
1445
1446 /* Report the error to the server log */
1448
1449 /*
1450 * We can now go away. Note that because we called InitProcess, a
1451 * callback was registered to do ProcKill, which will clean up
1452 * necessary state.
1453 */
1454 proc_exit(0);
1455 }
1456
1457 /* We can now handle ereport(ERROR) */
1458 PG_exception_stack = &local_sigjmp_buf;
1459
1460 sigprocmask(SIG_SETMASK, &UnBlockSig, NULL);
1461
1462 /*
1463 * Set always-secure search path, so malicious users can't redirect user
1464 * code (e.g. pg_index.indexprs). (That code runs in a
1465 * SECURITY_RESTRICTED_OPERATION sandbox, so malicious users could not
1466 * take control of the entire autovacuum worker in any case.)
1467 */
1468 SetConfigOption("search_path", "", PGC_SUSET, PGC_S_OVERRIDE);
1469
1470 /*
1471 * Force zero_damaged_pages OFF in the autovac process, even if it is set
1472 * in postgresql.conf. We don't really want such a dangerous option being
1473 * applied non-interactively.
1474 */
1475 SetConfigOption("zero_damaged_pages", "false", PGC_SUSET, PGC_S_OVERRIDE);
1476
1477 /*
1478 * Force settable timeouts off to avoid letting these settings prevent
1479 * regular maintenance from being executed.
1480 */
1481 SetConfigOption("statement_timeout", "0", PGC_SUSET, PGC_S_OVERRIDE);
1482 SetConfigOption("transaction_timeout", "0", PGC_SUSET, PGC_S_OVERRIDE);
1483 SetConfigOption("lock_timeout", "0", PGC_SUSET, PGC_S_OVERRIDE);
1484 SetConfigOption("idle_in_transaction_session_timeout", "0",
1486
1487 /*
1488 * Force default_transaction_isolation to READ COMMITTED. We don't want
1489 * to pay the overhead of serializable mode, nor add any risk of causing
1490 * deadlocks or delaying other transactions.
1491 */
1492 SetConfigOption("default_transaction_isolation", "read committed",
1494
1495 /*
1496 * Force synchronous replication off to allow regular maintenance even if
1497 * we are waiting for standbys to connect. This is important to ensure we
1498 * aren't blocked from performing anti-wraparound tasks.
1499 */
1501 SetConfigOption("synchronous_commit", "local",
1503
1504 /*
1505 * Even when system is configured to use a different fetch consistency,
1506 * for autovac we always want fresh stats.
1507 */
1508 SetConfigOption("stats_fetch_consistency", "none", PGC_SUSET, PGC_S_OVERRIDE);
1509
1510 /*
1511 * Get the info about the database we're going to work on.
1512 */
1513 LWLockAcquire(AutovacuumLock, LW_EXCLUSIVE);
1514
1515 /*
1516 * beware of startingWorker being INVALID; this should normally not
1517 * happen, but if a worker fails after forking and before this, the
1518 * launcher might have decided to remove it from the queue and start
1519 * again.
1520 */
1522 {
1524 dbid = MyWorkerInfo->wi_dboid;
1526
1527 /* insert into the running list */
1530
1531 /*
1532 * remove from the "starting" pointer, so that the launcher can start
1533 * a new worker if required
1534 */
1536 LWLockRelease(AutovacuumLock);
1537
1539
1540 /* wake up the launcher */
1543 }
1544 else
1545 {
1546 /* no worker entry for me, go away */
1547 elog(WARNING, "autovacuum worker started without a worker entry");
1548 dbid = InvalidOid;
1549 LWLockRelease(AutovacuumLock);
1550 }
1551
1552 if (OidIsValid(dbid))
1553 {
1554 char dbname[NAMEDATALEN];
1555
1556 /*
1557 * Report autovac startup to the cumulative stats system. We
1558 * deliberately do this before InitPostgres, so that the
1559 * last_autovac_time will get updated even if the connection attempt
1560 * fails. This is to prevent autovac from getting "stuck" repeatedly
1561 * selecting an unopenable database, rather than making any progress
1562 * on stuff it can connect to.
1563 */
1565
1566 /*
1567 * Connect to the selected database, specifying no particular user,
1568 * and ignoring datallowconn. Collect the database's name for
1569 * display.
1570 *
1571 * Note: if we have selected a just-deleted database (due to using
1572 * stale stats info), we'll fail and exit here.
1573 */
1574 InitPostgres(NULL, dbid, NULL, InvalidOid,
1576 dbname);
1580 (errmsg_internal("autovacuum: processing database \"%s\"", dbname)));
1581
1582 if (PostAuthDelay)
1583 pg_usleep(PostAuthDelay * 1000000L);
1584
1585 /* And do an appropriate amount of work */
1588 do_autovacuum();
1589 }
1590
1591 /*
1592 * The launcher will be notified of my death in ProcKill, *if* we managed
1593 * to get a worker slot at all
1594 */
1595
1596 /* All done, go away */
1597 proc_exit(0);
1598}
static void FreeWorkerInfo(int code, Datum arg)
Definition: autovacuum.c:1604
static TransactionId recentXid
Definition: autovacuum.c:157
static void do_autovacuum(void)
Definition: autovacuum.c:1883
static MultiXactId recentMulti
Definition: autovacuum.c:158
static WorkerInfo MyWorkerInfo
Definition: autovacuum.c:313
sigset_t UnBlockSig
Definition: pqsignal.c:22
#define OidIsValid(objectId)
Definition: c.h:732
int errmsg_internal(const char *fmt,...)
Definition: elog.c:1157
void EmitErrorReport(void)
Definition: elog.c:1687
ErrorContextCallback * error_context_stack
Definition: elog.c:94
sigjmp_buf * PG_exception_stack
Definition: elog.c:96
#define DEBUG1
Definition: elog.h:30
#define elog(elevel,...)
Definition: elog.h:225
void SetConfigOption(const char *name, const char *value, GucContext context, GucSource source)
Definition: guc.c:4332
@ PGC_S_OVERRIDE
Definition: guc.h:123
@ PGC_SUSET
Definition: guc.h:78
static void dlist_push_head(dlist_head *head, dlist_node *node)
Definition: ilist.h:347
void SignalHandlerForConfigReload(SIGNAL_ARGS)
Definition: interrupt.c:61
void on_shmem_exit(pg_on_exit_callback function, Datum arg)
Definition: ipc.c:365
void proc_exit(int code)
Definition: ipc.c:104
MemoryContext PostmasterContext
Definition: mcxt.c:151
void MemoryContextDelete(MemoryContext context)
Definition: mcxt.c:454
@ NormalProcessing
Definition: miscadmin.h:461
@ InitProcessing
Definition: miscadmin.h:460
#define GetProcessingMode()
Definition: miscadmin.h:470
#define HOLD_INTERRUPTS()
Definition: miscadmin.h:133
#define SetProcessingMode(mode)
Definition: miscadmin.h:472
@ B_AUTOVAC_WORKER
Definition: miscadmin.h:344
#define INIT_PG_OVERRIDE_ALLOW_CONNS
Definition: miscadmin.h:489
BackendType MyBackendType
Definition: miscinit.c:64
MultiXactId ReadNextMultiXactId(void)
Definition: multixact.c:771
#define NAMEDATALEN
#define die(msg)
void pgstat_report_autovac(Oid dboid)
#define pqsignal
Definition: port.h:521
int PostAuthDelay
Definition: postgres.c:98
void FloatExceptionHandler(SIGNAL_ARGS)
Definition: postgres.c:3048
void StatementCancelHandler(SIGNAL_ARGS)
Definition: postgres.c:3031
#define InvalidOid
Definition: postgres_ext.h:37
unsigned int Oid
Definition: postgres_ext.h:32
void BaseInit(void)
Definition: postinit.c:606
void InitPostgres(const char *in_dbname, Oid dboid, const char *username, Oid useroid, bits32 flags, char *out_dbname)
Definition: postinit.c:700
void procsignal_sigusr1_handler(SIGNAL_ARGS)
Definition: procsignal.c:671
void init_ps_display(const char *fixed_part)
Definition: ps_status.c:269
static void set_ps_display(const char *activity)
Definition: ps_status.h:40
void pg_usleep(long microsec)
Definition: signal.c:53
PGPROC * MyProc
Definition: proc.c:66
void InitProcess(void)
Definition: proc.c:341
char * dbname
Definition: streamutil.c:50
dlist_node wi_links
Definition: autovacuum.c:232
PGPROC * wi_proc
Definition: autovacuum.c:235
void InitializeTimeouts(void)
Definition: timeout.c:470
static TransactionId ReadNextTransactionId(void)
Definition: transam.h:315
#define SIGCHLD
Definition: win32_port.h:168
#define SIGHUP
Definition: win32_port.h:158
#define SIGPIPE
Definition: win32_port.h:163
#define kill(pid, sig)
Definition: win32_port.h:493
#define SIGUSR1
Definition: win32_port.h:170
#define SIGUSR2
Definition: win32_port.h:171
int synchronous_commit
Definition: xact.c:86
@ SYNCHRONOUS_COMMIT_LOCAL_FLUSH
Definition: xact.h:71

References Assert, AutoVacuumShmem, AutoVacuumShmemStruct::av_launcherpid, AutoVacuumShmemStruct::av_runningWorkers, AutoVacuumShmemStruct::av_startingWorker, B_AUTOVAC_WORKER, BaseInit(), dbname, DEBUG1, die, dlist_push_head(), do_autovacuum(), elog, EmitErrorReport(), ereport, errmsg_internal(), error_context_stack, FloatExceptionHandler(), FreeWorkerInfo(), GetProcessingMode, HOLD_INTERRUPTS, INIT_PG_OVERRIDE_ALLOW_CONNS, init_ps_display(), InitializeTimeouts(), InitPostgres(), InitProcess(), InitProcessing, InvalidOid, kill, LW_EXCLUSIVE, LWLockAcquire(), LWLockRelease(), MemoryContextDelete(), MyBackendType, MyProc, MyWorkerInfo, NAMEDATALEN, NormalProcessing, OidIsValid, on_shmem_exit(), PG_exception_stack, pg_usleep(), PGC_S_OVERRIDE, PGC_SUSET, pgstat_report_autovac(), PostAuthDelay, PostmasterContext, pqsignal, proc_exit(), procsignal_sigusr1_handler(), ReadNextMultiXactId(), ReadNextTransactionId(), recentMulti, recentXid, set_ps_display(), SetConfigOption(), SetProcessingMode, SIGCHLD, SIGHUP, SignalHandlerForConfigReload(), SIGPIPE, SIGUSR1, SIGUSR2, StatementCancelHandler(), synchronous_commit, SYNCHRONOUS_COMMIT_LOCAL_FLUSH, UnBlockSig, WARNING, WorkerInfoData::wi_dboid, WorkerInfoData::wi_links, and WorkerInfoData::wi_proc.

Variable Documentation

◆ autovacuum_anl_scale

PGDLLIMPORT double autovacuum_anl_scale
extern

Definition at line 128 of file autovacuum.c.

Referenced by relation_needs_vacanalyze().

◆ autovacuum_anl_thresh

PGDLLIMPORT int autovacuum_anl_thresh
extern

Definition at line 127 of file autovacuum.c.

Referenced by relation_needs_vacanalyze().

◆ autovacuum_freeze_max_age

PGDLLIMPORT int autovacuum_freeze_max_age
extern

◆ autovacuum_max_workers

PGDLLIMPORT int autovacuum_max_workers
extern

◆ autovacuum_multixact_freeze_max_age

PGDLLIMPORT int autovacuum_multixact_freeze_max_age
extern

◆ autovacuum_naptime

PGDLLIMPORT int autovacuum_naptime
extern

◆ autovacuum_start_daemon

PGDLLIMPORT bool autovacuum_start_daemon
extern

Definition at line 117 of file autovacuum.c.

Referenced by autovac_init(), and AutoVacuumingActive().

◆ autovacuum_vac_cost_delay

PGDLLIMPORT double autovacuum_vac_cost_delay
extern

Definition at line 132 of file autovacuum.c.

Referenced by VacuumUpdateCosts().

◆ autovacuum_vac_cost_limit

PGDLLIMPORT int autovacuum_vac_cost_limit
extern

Definition at line 133 of file autovacuum.c.

Referenced by AutoVacuumUpdateCostLimit().

◆ autovacuum_vac_ins_scale

PGDLLIMPORT double autovacuum_vac_ins_scale
extern

Definition at line 126 of file autovacuum.c.

Referenced by relation_needs_vacanalyze().

◆ autovacuum_vac_ins_thresh

PGDLLIMPORT int autovacuum_vac_ins_thresh
extern

Definition at line 125 of file autovacuum.c.

Referenced by relation_needs_vacanalyze().

◆ autovacuum_vac_max_thresh

PGDLLIMPORT int autovacuum_vac_max_thresh
extern

Definition at line 123 of file autovacuum.c.

Referenced by relation_needs_vacanalyze().

◆ autovacuum_vac_scale

PGDLLIMPORT double autovacuum_vac_scale
extern

Definition at line 124 of file autovacuum.c.

Referenced by relation_needs_vacanalyze().

◆ autovacuum_vac_thresh

PGDLLIMPORT int autovacuum_vac_thresh
extern

Definition at line 122 of file autovacuum.c.

Referenced by relation_needs_vacanalyze().

◆ autovacuum_work_mem

PGDLLIMPORT int autovacuum_work_mem
extern

Definition at line 120 of file autovacuum.c.

Referenced by dead_items_alloc(), and ginInsertCleanup().

◆ autovacuum_worker_slots

◆ AutovacuumLauncherPid

PGDLLIMPORT int AutovacuumLauncherPid
extern

Definition at line 316 of file autovacuum.c.

Referenced by FreeWorkerInfo(), and ProcKill().

◆ Log_autovacuum_min_duration

PGDLLIMPORT int Log_autovacuum_min_duration
extern

Definition at line 135 of file autovacuum.c.

Referenced by table_recheck_autovac().