This commit is contained in:
2025-07-30 16:39:18 +08:00
parent 8e8aba464b
commit f01421d2f6

View File

@@ -23,5 +23,98 @@ SELECT nspname || '.' || relname AS "relation",
FROM pg_stat_user_tables
WHERE n_dead_tup > 0
ORDER BY n_dead_tup DESC;
```
```sql
SELECT
table_schema || '.' || table_name AS ,
table_type AS ,
table_catalog AS ,
-- 使用 format() 函数正确引用表名
pg_size_pretty(pg_relation_size(format('%I.%I', table_schema, table_name))) AS ,
pg_size_pretty(pg_indexes_size(format('%I.%I', table_schema, table_name))) AS ,
pg_size_pretty(pg_total_relation_size(format('%I.%I', table_schema, table_name))) AS ,
pg_total_relation_size(format('%I.%I', table_schema, table_name)) AS
FROM
information_schema.tables
WHERE
table_type IN ('BASE TABLE', 'PARTITIONED TABLE')
AND table_schema NOT IN ('pg_catalog', 'information_schema', 'edb_sys')
ORDER BY
DESC;
```
```sql
SELECT
pid,
relid::regclass AS table_name,
phase,
heap_blks_total,
heap_blks_scanned,
heap_blks_scanned/heap_blks_total rate,
heap_blks_vacuumed,
index_vacuum_count,
max_dead_tuples,
num_dead_tuples
FROM
pg_stat_progress_vacuum;
SELECT
pid,
usename,
datname,
query,
state,
query_start,
now() - query_start AS running_time
FROM
pg_stat_activity
WHERE
query ILIKE '%VACUUM%'
ORDER BY
query_start;
SELECT
schemaname,
relname,
n_live_tup AS ,
n_dead_tup AS ,
round(100 * n_dead_tup / (n_live_tup + 1), 2) AS
FROM pg_stat_user_tables
WHERE n_live_tup > 0
AND round(100 * n_dead_tup / (n_live_tup + 1), 2) > 20 -- 死元组占比超20%
ORDER BY DESC;
SELECT
schemaname,
relname AS ,
pg_size_pretty(pg_relation_size(relid)) AS ,
idx_scan AS , -- EDB 中直接通过 pg_stat_user_indexes 的 idx_scan 字段获取扫描次数
-- 索引膨胀率(索引实际大小 / 有效数据大小,>1.5 表示碎片严重)
round(
pg_relation_size(relid)::numeric /
pg_indexes_size(relid::regclass)::numeric, -- 修正类型转换,去掉多余的 text 转换
2
) AS
FROM pg_stat_user_indexes
WHERE
pg_indexes_size(relid::regclass) > 0 -- 排除无效索引
AND round(
pg_relation_size(relid)::numeric /
pg_indexes_size(relid::regclass)::numeric,
2
) > 1.5 -- 筛选膨胀率 >1.5 的索引
ORDER BY DESC;
```