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
3.postgresql将一张表的数据copy到另一张表中
-- 创建目标表(若已存在则跳过此步骤)
CREATE TABLE target_table (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
age INTEGER
);
-- 从源表复制数据到目标表
INSERT INTO target_table (name, age)
SELECT name, age FROM source_table;
vacuum 建议日常使用
vacuum full 建议大量update、delete后使用
vacuum full 会清理整个数据库
vacuum full tablename 会清理指定表的空间
可阅读参考:
http://www.postgres.cn/docs/10/routine-vacuuming.html