Postgresql相关数据库、表占用磁盘大小统计(查看表数据占用空间及表数据+索引占用空间大小)

27 篇文章 1 订阅
22 篇文章 0 订阅

1. 统计数据库大小

  • 单个数据库的大小

select pg_size_pretty (pg_database_size(‘test_database’);

  • 所有数据库的大小

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

2. 统计数据表大小

  • 单个表大小

select pg_size_pretty(pg_relation_size(‘mytab’)) as size;

  • 查询单个表的总大小,包括该表的索引大小

select pg_size_pretty(pg_total_relation_size(‘tab’)) as size;

  • 所有表大小

select relname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_tables order by pg_relation_size(relid) desc;

  • 分区表大小查询
    上述方式不起作用,查到的是0bytes,需要先查出有哪些子表,然后再看每个子表的大小再叠加;

– 查询分区表有哪些子表,partition_table_name是主表,还可能会查出来主键,唯一键等;需要再加reltype>0筛选出表名
SELECT * FROM pg_class
where relname like ‘partition_table_name_%’ and reltype>0;

– 查询每个子表标名,表的大小,及包括索引的总大小,并按总大小倒序排列;
SELECT relname,pg_size_pretty(pg_relation_size(relname::text)) as tableSize,pg_size_pretty(pg_total_relation_size(relname::text)) as tableTotalSize,pg_total_relation_size(relname::text) as total, FROM pg_class
where relname like ‘partition_table_name_%’ and reltype>0 order by total desc;

– 查询分区表总大小
select sum(total),pg_size_pretty(sum(total)) from (SELECT relname,pg_size_pretty(pg_relation_size(relname::text)) as tableSize,pg_size_pretty(pg_total_relation_size(relname::text)) as tableTotalSize,pg_total_relation_size(relname::text) as total, FROM pg_class
where relname like ‘partition_table_name_%’ and reltype>0 order by total desc) t

3. 所有表的记录数

select relname as TABLE_NAME, reltuples as rowCounts from pg_class where relkind = ‘r’ order by rowCounts desc

4. 查询单个表的数据大小,索引大小,表大小,并按表大小倒序排列

SELECT
    table_name,
    pg_size_pretty(table_size) AS table_size,
    pg_size_pretty(indexes_size) AS indexes_size,
    pg_size_pretty(total_size) AS total_size
FROM (
    SELECT
        table_name,
        pg_table_size(table_name) AS table_size,
        pg_indexes_size(table_name) AS indexes_size,
        pg_total_relation_size(table_name) AS total_size
    FROM (
        SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name
        FROM information_schema.tables
    ) AS all_tables
    ORDER BY total_size DESC
) AS pretty_sizes;

5. 查询数据库及大小

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

参考

  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PostgreSQL是一种开源的关系型数据库管理系统,它使用磁盘空间来存储数据索引。当数据库中的数据不再需要或者空间不足时,清理磁盘空间是很重要的。下面是一些清理磁盘空间的方法: 1. VACUUM命令:VACUUM命令用于回收已删除行占用空间,并更新统计信息。它可以释放未使用的空间并提高性能。可以使用VACUUM命令来清理索引和整个数据库。 2. VACUUM FULL命令:VACUUM FULL命令会重新组织并释放未使用的空间。它会创建一个新的,将数据复制到新中,并删除旧。这个过程可能会比较慢,但可以显著减少大小。 3. CLUSTER命令:CLUSTER命令会根据指定的索引进行重新排序,从而减少磁盘碎片并提高查询性能。它会创建一个新的并将数据按照指定的索引顺序复制到新中,然后删除旧。 4. REINDEX命令:REINDEX命令用于重建索引,可以减少索引占用空间并提高查询性能。可以使用REINDEX命令对索引和整个数据库进行重建。 5. 删除不需要的数据:如果数据库中存在不再需要的数据,可以使用DELETE或TRUNCATE命令将其删除。删除数据后,可以使用VACUUM命令回收空间。 6. 定期备份和恢复:定期备份和恢复数据库可以清理磁盘空间并优化性能。备份数据库后,可以使用DROP DATABASE命令删除原始数据库,并使用CREATE DATABASE命令重新创建数据库

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序媛一枚~

您的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值