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;
```