autovacuum.h 2.6 KB

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