postgresql数据库清理

大量update或者delete后 磁盘空间会猛增。原理是postgresql并没有真正的删除 只是将删除数据的状态置为已删除,该空间不能记录被从新使用。若是删除的记录位于表的末端,其所占用的空间将会被物理释放并归还操做系统。若是不是末端数据,该命令会将指定表或索引中被删除数据所占用空间从新置为可用状态,那么在从此有新数据插入时,将优先使用该空间,直到全部被重用的空间用完时,再考虑使用新增的磁盘页面。

vacuum 不会锁表 会释放文件空间 不会释放磁盘空间 效率高 建议常用

vacuum full 会锁表 会释放磁盘空间 效率低 建议大量delete和update后使用。

1 查看用例下所有数据库从磁盘空间

select datname, pg_size_pretty (pg_database_size(datname)) AS size from pg_database;

2 查看指定数据库 每个表的磁盘空间 倒叙排列

SELECT
table_schema || '.' || table_name
AS table_full_name, pg_size_pretty(pg_total_relation_size('"' ||table_schema || '"."' || table_name || '"')) AS size
FROM
information_schema.tables
ORDER BY
pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') desc

###

vacuum 建议日常使用

vacuum full 建议大量update、delete后使用。

vacuum full 会清理整个数据库

posted @   JackGIS  阅读(3352)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2015-08-14 flex NaN
2013-08-14 AE 将地图导出为图片的两种方法
点击右上角即可分享
微信分享提示