Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > 统计mysql和pgsql库和表占用大小

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

作者:学无止境的宝妈

本文介绍了统计数据库和表占用情况的方法,适用于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;

总结

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

您可能感兴趣的文章:
阅读全文