自学内容网 自学内容网

PostgreSQL 查看表的膨胀率

数据库系统在有大量的 CREATE TABLE、DROP TABLE 的场景中,会造成系统表膨胀,特别是 pg_class pg_attribute 等系统表。虽然 PostgreSQL 的后台进程 AUTOVACUUM 进程会被触发回收,但是当系统硬件不是很好的情况下,回收会存在瓶颈,这就导致系统表膨胀,从而引起客户端查询非常缓慢。

下面这个语句帮助我们了解当前数据库中有哪些表的膨胀率比较大:
SELECT schemaname||'.'||relname AS table_full_name,
       pg_size_pretty(pg_relation_size(schemaname||'.'||relname)) AS table_size,
       n_dead_tup,
       n_live_tup,
       round(n_dead_tup * 100 / (n_live_tup + n_dead_tup),2) AS dead_tup_ratio
FROM pg_stat_all_tables
WHERE n_dead_tup >= 1000
ORDER BY dead_tup_ratio DESC;

当表的膨胀率很大的情况下,我们可以手动的使用 VACUUM 和 ANALYZE 触发表的回收,需要注意的是 VACUUM FULL 会锁表而 VACUUM 不会。


原文地址:https://blog.csdn.net/2401_83375581/article/details/143664161

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!