开发者社区 问答 正文

如何查看表和数据库的数据量大小?


  • 查询一张表的总大小(单位MB,包含表的索引和数据,假设表的模式为<schemaname>,表名为<tablename>):select pg_size_pretty(pg_total_relation_size('<schemaname>.<tablename>'));


  • 查询表的数据大小(单位MB,不包括索引,假设表的模式为<schemaname>,表名为<tablename>):select pg_size_pretty(pg_relation_size('<schemaname>.<tablename>'));


  • 查询分区表所有分区的总大小(单位MB,包含表的索引和数据,假设表的模式为<schemaname>,表名为<tablename>):select schemaname,tablename,round(sum(pg_total_relation_size(schemaname || '.' || partitiontablename))/1024/1024) "MB" from pg_partitions where schemaname='<schemaname>' and tablename='<tablename>' group by 1,2;


  • 查询一个Schema下面的所有表的总大小(单位MB,包括索引和数据,假设模式为<schemaname>):select schemaname ,round(sum(pg_total_relation_size(schemaname||'.'||tablename))/1024/1024) "Size_MB" from pg_tables where schemaname='<schemaname>' group by 1;


  • 查询每个数据库的大小(单位 MB):select datname,pg_size_pretty(pg_database_size(datname)) from pg_database;

展开
收起
云栖大讲堂 2017-11-01 11:51:28 3043 分享 版权
阿里云 AI 助理回答

您列出的SQL查询语句是基于PostgreSQL数据库的系统目录表来获取表、分区表、Schema以及数据库大小信息的。这些查询非常实用,能帮助用户了解其在阿里云RDS for PostgreSQL或自建PostgreSQL实例中的数据存储情况。下面是对每个查询的简要说明和适用场景:

  1. 查询一张表的总大小(包括索引和数据):

    SELECT pg_size_pretty(pg_total_relation_size('<schema_name>.<table_name>'));
    

    这个查询会返回指定表的总大小,包括数据和所有关联索引,单位为易读格式(如MB, GB等)。

  2. 查询表的数据大小(不包括索引):

    SELECT pg_size_pretty(pg_relation_size('<schema_name>.<table_name>'));
    

    此查询仅返回表数据本身的大小,不包含任何索引。

  3. 查询分区表所有分区的总大小(包括索引和数据):

    SELECT schemaname, tablename,
          ROUND(SUM(pg_total_relation_size(schemaname || '.' || partitiontablename)) / 1024 / 1024) AS "MB"
    FROM pg_partitions
    WHERE schemaname = '<schema_name>' AND tablename = '<table_name>'
    GROUP BY 1, 2;
    

    如果您的表使用了分区,这个查询将计算该分区表所有分区的总大小。

  4. 查询一个Schema下面的所有表的总大小(包括索引和数据):

    SELECT schemaname,
          ROUND(SUM(pg_total_relation_size(schemaname || '.' || tablename)) / 1024 / 1024) AS "Size_MB"
    FROM pg_tables
    WHERE schemaname = '<schema_name>'
    GROUP BY 1;
    

    此查询适用于想要了解特定模式下所有表占用空间总和的情况。

  5. 查询每个数据库的大小:

    SELECT datname, pg_size_pretty(pg_database_size(datname))
    FROM pg_database;
    

    如果您管理多个数据库,这个查询可以提供每个数据库的总大小,帮助监控资源使用情况。

请记得,在实际使用中,将<schema_name><table_name>替换为您实际的数据库模式名和表名。如果您是在阿里云RDS for PostgreSQL服务上执行这些操作,请确保您已通过合适的客户端工具或管理控制台连接到数据库,并且拥有足够的权限来执行这些系统目录表的查询。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: