Files
pgsql-jellyfin/docs/DEAD_TUPLE_AUTOVACUUM_GUIDE.md
T

68 lines
1.7 KiB
Markdown

# 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:
```sql
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
```powershell
.\scripts\Weekly-Performance-Monitor.ps1 -AutoVacuumAnalyze
```
Example with custom thresholds:
```powershell
.\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:
```powershell
.\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`