feat: add conditional VACUUM ANALYZE support to weekly monitoring scripts
This commit is contained in:
@@ -6,7 +6,8 @@
|
||||
Sets up automated weekly performance monitoring via Windows Task Scheduler
|
||||
|
||||
.DESCRIPTION
|
||||
Creates a scheduled task to run Weekly-Performance-Monitor.ps1 every Monday at 6 AM
|
||||
Creates a scheduled task to run Weekly-Performance-Monitor.ps1 every Monday at 6 AM.
|
||||
Can optionally enable conditional VACUUM ANALYZE based on dead tuple thresholds.
|
||||
|
||||
.PARAMETER Uninstall
|
||||
Remove the scheduled task
|
||||
@@ -17,12 +18,24 @@
|
||||
.PARAMETER DayOfWeek
|
||||
Day of week to run (default: Monday)
|
||||
|
||||
.PARAMETER EnableAutoVacuumAnalyze
|
||||
Enable conditional VACUUM ANALYZE for tables above dead tuple thresholds
|
||||
|
||||
.PARAMETER DeadTupleThreshold
|
||||
Minimum dead tuples before VACUUM ANALYZE runs (default: 10000)
|
||||
|
||||
.PARAMETER DeadTuplePercentThreshold
|
||||
Minimum dead tuple percentage before VACUUM ANALYZE runs (default: 20)
|
||||
|
||||
.EXAMPLE
|
||||
.\Setup-Weekly-Monitor.ps1
|
||||
|
||||
.EXAMPLE
|
||||
.\Setup-Weekly-Monitor.ps1 -TaskTime "3am" -DayOfWeek Sunday
|
||||
|
||||
.EXAMPLE
|
||||
.\Setup-Weekly-Monitor.ps1 -EnableAutoVacuumAnalyze -DeadTupleThreshold 10000 -DeadTuplePercentThreshold 20
|
||||
|
||||
.EXAMPLE
|
||||
.\Setup-Weekly-Monitor.ps1 -Uninstall
|
||||
#>
|
||||
@@ -37,7 +50,18 @@ param (
|
||||
|
||||
[Parameter()]
|
||||
[ValidateSet('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday')]
|
||||
[string]$DayOfWeek = 'Monday'
|
||||
[string]$DayOfWeek = 'Monday',
|
||||
|
||||
[Parameter()]
|
||||
[switch]$EnableAutoVacuumAnalyze,
|
||||
|
||||
[Parameter()]
|
||||
[ValidateRange(1, [int]::MaxValue)]
|
||||
[int]$DeadTupleThreshold = 10000,
|
||||
|
||||
[Parameter()]
|
||||
[ValidateRange(0.01, 100.0)]
|
||||
[double]$DeadTuplePercentThreshold = 20.0
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
@@ -104,6 +128,11 @@ Write-ColorOutput "Configuration:" -Color Cyan
|
||||
Write-ColorOutput " Task Name: $TaskName" -Color White
|
||||
Write-ColorOutput " Script: $MonitorScript" -Color White
|
||||
Write-ColorOutput " Schedule: Every $DayOfWeek at $TaskTime" -Color White
|
||||
if ($EnableAutoVacuumAnalyze) {
|
||||
Write-ColorOutput " Auto VACUUM ANALYZE: Enabled (dead tuples >= $DeadTupleThreshold, dead percent >= $DeadTuplePercentThreshold)" -Color White
|
||||
} else {
|
||||
Write-ColorOutput " Auto VACUUM ANALYZE: Disabled" -Color White
|
||||
}
|
||||
Write-ColorOutput ""
|
||||
|
||||
# Remove existing task if present
|
||||
@@ -116,9 +145,14 @@ if ($existingTask) {
|
||||
# Create scheduled task action
|
||||
Write-ColorOutput "Creating scheduled task..." -Color Cyan
|
||||
|
||||
$scriptArguments = "-NoProfile -ExecutionPolicy Bypass -File `"$MonitorScript`""
|
||||
if ($EnableAutoVacuumAnalyze) {
|
||||
$scriptArguments += " -AutoVacuumAnalyze -DeadTupleThreshold $DeadTupleThreshold -DeadTuplePercentThreshold $DeadTuplePercentThreshold"
|
||||
}
|
||||
|
||||
$action = New-ScheduledTaskAction `
|
||||
-Execute "PowerShell.exe" `
|
||||
-Argument "-NoProfile -ExecutionPolicy Bypass -File `"$MonitorScript`""
|
||||
-Argument $scriptArguments
|
||||
|
||||
# Create trigger
|
||||
$trigger = New-ScheduledTaskTrigger `
|
||||
|
||||
Reference in New Issue
Block a user