1 /*------------------------------------------------------------------------- 2 * 3 * autovacuum.h 4 * header file for integrated autovacuum daemon 5 * 6 * 7 * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group 8 * Portions Copyright (c) 1994, Regents of the University of California 9 * 10 * src/include/postmaster/autovacuum.h 11 * 12 *------------------------------------------------------------------------- 13 */ 14 #ifndef AUTOVACUUM_H 15 #define AUTOVACUUM_H 16 17 #include "storage/block.h" 18 19 /* 20 * Other processes can request specific work from autovacuum, identified by 21 * AutoVacuumWorkItem elements. 22 */ 23 typedef enum 24 { 25 AVW_BRINSummarizeRange 26 } AutoVacuumWorkItemType; 27 28 29 /* GUC variables */ 30 extern bool autovacuum_start_daemon; 31 extern int autovacuum_max_workers; 32 extern int autovacuum_work_mem; 33 extern int autovacuum_naptime; 34 extern int autovacuum_vac_thresh; 35 extern double autovacuum_vac_scale; 36 extern int autovacuum_vac_ins_thresh; 37 extern double autovacuum_vac_ins_scale; 38 extern int autovacuum_anl_thresh; 39 extern double autovacuum_anl_scale; 40 extern int autovacuum_freeze_max_age; 41 extern int autovacuum_multixact_freeze_max_age; 42 extern double autovacuum_vac_cost_delay; 43 extern int autovacuum_vac_cost_limit; 44 45 /* autovacuum launcher PID, only valid when worker is shutting down */ 46 extern int AutovacuumLauncherPid; 47 48 extern int Log_autovacuum_min_duration; 49 50 /* Status inquiry functions */ 51 extern bool AutoVacuumingActive(void); 52 extern bool IsAutoVacuumLauncherProcess(void); 53 extern bool IsAutoVacuumWorkerProcess(void); 54 55 #define IsAnyAutoVacuumProcess() \ 56 (IsAutoVacuumLauncherProcess() || IsAutoVacuumWorkerProcess()) 57 58 /* Functions to start autovacuum process, called from postmaster */ 59 extern void autovac_init(void); 60 extern int StartAutoVacLauncher(void); 61 extern int StartAutoVacWorker(void); 62 63 /* called from postmaster when a worker could not be forked */ 64 extern void AutoVacWorkerFailed(void); 65 66 /* autovacuum cost-delay balancer */ 67 extern void AutoVacuumUpdateDelay(void); 68 69 #ifdef EXEC_BACKEND 70 extern void AutoVacLauncherMain(int argc, char *argv[]) pg_attribute_noreturn(); 71 extern void AutoVacWorkerMain(int argc, char *argv[]) pg_attribute_noreturn(); 72 extern void AutovacuumWorkerIAm(void); 73 extern void AutovacuumLauncherIAm(void); 74 #endif 75 76 extern bool AutoVacuumRequestWork(AutoVacuumWorkItemType type, 77 Oid relationId, BlockNumber blkno); 78 79 /* shared memory stuff */ 80 extern Size AutoVacuumShmemSize(void); 81 extern void AutoVacuumShmemInit(void); 82 83 #endif /* AUTOVACUUM_H */ 84