跟着AI 学SQL - 统计postgresql数据库表的数据量

背景:客户要求统计当前postgresql 的表的数据量

写好提示词扔给ai  以下为文心一言的回答

提示词:

查询postgresql 数据库中 每个表的数据量大小及总量

回答:

在PostgreSQL中,你可以通过查询系统表来获取数据库中每个表的数据量大小(包括索引),并计算这些大小的总和。以下是一个示例SQL查询,该查询将帮助你获取每个表的大小(以MB为单位),并计算所有表的总大小。

SELECT   
    table_schema || '.' || table_name AS "full_table_name",  
    pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS "size",  
    pg_size_pretty(pg_relation_size('"' || table_schema || '"."' || table_name || '"')) AS "table_size",  
    pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') - pg_relation_size('"' || table_schema || '"."' || table_name || '"')) AS "index_size"  
FROM   
    information_schema.tables  
WHERE   
    table_schema = 'public' -- 你可以根据需要修改这个值来查询不同的schema  
ORDER BY   
    pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC;  
  
-- 计算所有表的总大小  
SELECT pg_size_pretty(SUM(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"'))) AS total_size  
FROM   
    information_schema.tables  
WHERE   
    table_schema = 'public'; -- 你可以根据需要修改这个值来查询不同的schema

说明

  1. 查询每个表的大小
    • pg_total_relation_size 函数返回指定表(包括索引和TOAST表)的总大小。
    • pg_relation_size 函数仅返回表本身的大小,不包括索引。
    • pg_size_pretty 函数将大小转换为易读的格式(如MB、GB)。
    • information_schema.tables 是PostgreSQL的系统视图,包含了数据库中所有表的信息。
  2. 计算所有表的总大小
    • 这个查询通过聚合pg_total_relation_size的结果来计算指定schema(例如public)中所有表的总大小。

注意

  • 替换table_schema = 'public'以查询不同schema中的表。
  • 如果你有权限问题,可能需要超级用户权限来查看某些表的信息。
  • 这些查询在大多数情况下应该工作良好,但总是好的做法在特定环境中进行测试。
  • PostgreSQL版本之间的系统函数和表结构可能有所不同,请根据你使用的PostgreSQL版本进行调整。

    在Navicat中执行结果如下:

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值