diff --git a/scripts/dbmaintance.ps1 b/scripts/dbmaintance.ps1 new file mode 100644 index 0000000..ad51685 --- /dev/null +++ b/scripts/dbmaintance.ps1 @@ -0,0 +1,40 @@ +# =============================== +# PostgreSQL Maintenance Script +# =============================== + +# .\dbmaintance.ps1 -psql + +param( + [switch]$psql = "D:\Program Files\PostgreSQL\17\bin\psql.exe" +) + +# Config +$env:PGPASSWORD = "obelix" # Or better: use pgpass.conf instead +$dbUser = "postgres" +$dbName = "lst_db" +$dbHost = "localhost" +$dbPort = "5432" + +# Path to psql (adjust if PostgreSQL is installed elsewhere) + + +# Show DB size before +& $psql -h $dbHost -p $dbPort -U $dbUser -d $dbName -c "SELECT pg_size_pretty(pg_database_size(current_database())) AS size_before;" + +# Run safe maintenance +& $psql -h $dbHost -p $dbPort -U $dbUser -d $dbName -c "VACUUM (ANALYZE);" +& $psql -h $dbHost -p $dbPort -U $dbUser -d $dbName -c "REINDEX DATABASE $dbName;" + +# Show DB size after +& $psql -h $dbHost -p $dbPort -U $dbUser -d $dbName -c "SELECT pg_size_pretty(pg_database_size(current_database())) AS size_after;" + +# Optional: per-table size breakdown +& $psql -h $dbHost -p $dbPort -U $dbUser -d $dbName -c @" +SELECT + schemaname || '.' || relname AS table_name, + pg_size_pretty(pg_total_relation_size(relid)) AS total_size, + pg_size_pretty(pg_relation_size(relid)) AS table_size, + pg_size_pretty(pg_total_relation_size(relid) - pg_relation_size(relid)) AS index_size +FROM pg_catalog.pg_statio_user_tables +ORDER BY pg_total_relation_size(relid) DESC; +"@