vacuum full mail_message 是我使用vacuum full清理的第一个表 空间从20G-->4G 效果很显著
odoo 大量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 || '"."'