统计mysql和pgsql库和表占用大小方式

 更新时间:2025年10月31日 09:46:48   作者:学无止境的宝妈  
本文介绍了统计数据库和表占用情况的方法,适用于MySQL 5.7和PostgreSQL 14.x版本,通过SQL查询,可以获取每个库和表的具体大小,帮助评估磁盘使用计划

适用背景

交付项目时,客户需要统计数据库和表占用情况,来评估后续磁盘使用计划。

以下sql对应库的版本,mysql为5.7 pgsql为14.x

mysql

每个库的大小,单位MB

use information_schema;
select table_schema,round(sum(data_length/1024/1024),2) as data from tables group by table_schema order by data desc;

具体库下的单表大小,单位MB

use information_schema;
select table_name,round(sum(data_length/1024/1024),2) as data from tables where table_schema='db_name' group by table_name order by data desc;

pgsql

每个库的大小,单位MB

SELECT 
    nspname AS table_schema,
    ROUND(SUM(pg_total_relation_size(c.oid)) / 1024.0 / 1024.0, 2) AS total_mb
FROM 
    pg_class c
JOIN 
    pg_namespace n ON c.relnamespace = n.oid
WHERE 
    c.relkind = 'r'
GROUP BY 
    nspname
ORDER BY 
    total_mb DESC;

统计schema下单表大小,单位MB

SELECT 
    relname AS table_name,
    ROUND(pg_relation_size(c.oid) / 1024.0 / 1024.0, 2) AS data_mb  -- 表数据大小(MB)
FROM 
    pg_class c
JOIN 
    pg_namespace n ON c.relnamespace = n.oid
WHERE 
    n.nspname = 'schema_name'  -- 指定schema名称
    AND c.relkind = 'r'  -- 只统计普通表
ORDER BY 
    data_mb DESC;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL通过binlog恢复数据

    MySQL通过binlog恢复数据

    通过了解binlog日志的相关配置,简单掌握通过binlog对数据库进行数据恢复操作。有此需求的朋友可以参考下
    2021-05-05
  • 将mysql脚本转化为oracle脚本的攻略与细节点

    将mysql脚本转化为oracle脚本的攻略与细节点

    前段时间公司项目数据库需要从mysql转为oracle,所以需要修改下原有的mysql脚本,这篇文章主要给大家介绍了关于将mysql脚本转化为oracle脚本的攻略与细节点,需要的朋友可以参考下
    2023-09-09
  • Mysql索引创建删除及使用代价

    Mysql索引创建删除及使用代价

    这篇文章主要为大家介绍了Mysql索引创建删除及使用代价详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • MySQL实现崩溃恢复的几种方法

    MySQL实现崩溃恢复的几种方法

    MySQL 使用一系列日志和恢复机制来实现崩溃恢复,确保数据库在发生崩溃后可以恢复到一致的状态,主要依赖的日志包括 Redo Log、Undo Log 和 Binary Log,下面就来详细的介绍一下
    2025-08-08
  • MySQL连接控制插件介绍

    MySQL连接控制插件介绍

    当连接数据库失败次数过多时,MySQL 是否会限制登录呢?数据库服务端应该怎么应对暴力破解呢?本篇文章介绍下 MySQL 中的连接控制插件,一起来学习下此插件的作用,需要的朋友可以参考下面文章内容
    2021-09-09
  • 解决MySQL报错:The last packet sent successfully to the server was 0 milliseconds ago.

    解决MySQL报错:The last packet sent successfu

    这篇文章主要介绍了解决MySQL报错:The last packet sent successfully to the server was 0 milliseconds ago问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • MySQL几种更新操作的案例分析

    MySQL几种更新操作的案例分析

    本文将通过一个用户账户金额更新的案例分析几种数据更新的操作的优劣,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • php后台经常提示无法连接mysql 刷新后又可以访问的解决方法

    php后台经常提示无法连接mysql 刷新后又可以访问的解决方法

    这几天有一台MySQL数据库服务器出现了频繁的掉线情况,通过排查,并没有排查出哪个网站被攻击,百思不得其解中的时候,群里有个朋友说是因为微软KB967723造成的,网上搜索了一下,果然很多人都是这样的问题,都是windows系统下安装的MySQL造成的
    2011-05-05
  • Mysql和SQLServer驱动连接的实现步骤

    Mysql和SQLServer驱动连接的实现步骤

    本文主要介绍了Mysql和SQL Server的驱动连接,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • mysql 分页优化解析

    mysql 分页优化解析

    似乎讨论分页的人很少,难道大家都沉迷于limit m,n?在有索引的情况下,limit m,n速度足够,可是在复杂条件搜索时,where somthing order by somefield+somefieldmysql会搜遍数据库,找出“所有”符合条件的记录,然后取出m,n条记录。
    2008-04-04

最新评论