清理查看表膨胀情况(膨胀率高建议FULL)
SELECT schemaname, relname AS table_name, n_live_tup AS live_rows, n_dead_tup AS dead_rows, ROUND(n_dead_tup::NUMERIC / (n_live_tup + 1) * 100, 2) AS dead_tuple_percent, 'vacuum full ' || schemaname || '.' || relname AS vacuum_full_command FROM pg_stat_user_tables WHERE schemaname = 'xxxxxxxxxx' AND relname = 'xxxxxxxxx'; ORDER BY ROUND(n_dead_tup::NUMERIC / (n_live_tup + 1) * 100, 2) DESC检查表的 autovacuum 状态
SELECT relname, (reloptions IS NULL OR reloptions::text NOT LIKE '%autovacuum_enabled=false%') AS autovacuum_is_enabled FROM pg_class延迟pg autovacuum
SELECT c.relname, n.nspname AS schema_name, ( c.reloptions IS NULL OR c.reloptions::text NOT LIKE '%autovacuum_enabled=false%' ) AS autovacuum_is_enabled, -- 拼接出关闭 autovacuum 的命令 'ALTER TABLE "' || n.nspname || '"."' || c.relname || '" SET (autovacuum_enabled=false);' AS disable_autovacuum_cmd FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind = 'r' -- 只查普通表 AND n.nspname = 'xxxxxxxx';