Files
pgsql-jellyfin/docs/DEAD_TUPLE_AUTOVACUUM_GUIDE.md
T

1.7 KiB

Dead Tuple Auto-Vacuum Guide

What was added

The weekly PostgreSQL monitoring workflow now supports conditional VACUUM ANALYZE based on dead tuple thresholds.

This was added to:

  • scripts\Weekly-Performance-Monitor.ps1
  • scripts\Setup-Weekly-Monitor.ps1

When enabled, the monitor checks pg_stat_user_tables and runs:

VACUUM (ANALYZE, VERBOSE) schema.table_name;

only for tables that exceed both configured thresholds.

New monitor parameters

scripts\Weekly-Performance-Monitor.ps1 now supports:

  • -AutoVacuumAnalyze
    Enables conditional vacuum/analyze.
  • -DeadTupleThreshold <int>
    Minimum dead tuples required (default: 10000).
  • -DeadTuplePercentThreshold <double>
    Minimum dead tuple percentage required (default: 20.0).

How to run manually

.\scripts\Weekly-Performance-Monitor.ps1 -AutoVacuumAnalyze

Example with custom thresholds:

.\scripts\Weekly-Performance-Monitor.ps1 -AutoVacuumAnalyze -DeadTupleThreshold 15000 -DeadTuplePercentThreshold 25

How to enable in the scheduled task

scripts\Setup-Weekly-Monitor.ps1 now supports:

  • -EnableAutoVacuumAnalyze
  • -DeadTupleThreshold <int>
  • -DeadTuplePercentThreshold <double>

Create or update the weekly task with auto-vacuum enabled:

.\scripts\Setup-Weekly-Monitor.ps1 -EnableAutoVacuumAnalyze -DeadTupleThreshold 10000 -DeadTuplePercentThreshold 20

The setup script passes these options to the weekly monitor when the scheduled task runs.

Notes

  • Conditional vacuum is opt-in and disabled unless you pass the enable flag.
  • Threshold checks are currently scoped to these schemas:
    • library
    • users
    • authentication
    • displaypreferences
    • activitylog