MySQL数据库实现统计所有表的空间占用与行数

 更新时间:2026年02月09日 09:00:10   作者:清山博客  
这篇文章主要为大家详细介绍了MySQL数据库实现统计所有表的空间占用与行数的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下

查看某个数据库中所有表的空间与行数统计

SELECT 
    TABLE_NAME AS `表名`,
    TABLE_ROWS AS `行数`,
    ROUND(DATA_LENGTH / 1024 / 1024, 2) AS `数据大小(MB)`,
    ROUND(INDEX_LENGTH / 1024 / 1024, 2) AS `索引大小(MB)`,
    ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS `总占用空间(MB)`,
    ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024, 2) AS `总占用空间(GB)`
FROM 
    information_schema.TABLES
WHERE 
    TABLE_SCHEMA = 'your_database_name' -- 替换为你的数据库名
ORDER BY 
    (DATA_LENGTH + INDEX_LENGTH) DESC;

执行结果

查看某个数据库总空间占用情况

SELECT 
    TABLE_SCHEMA AS `数据库名`,
    SUM(TABLE_ROWS) AS `总行数`,
    ROUND(SUM(DATA_LENGTH) / 1024 / 1024, 2) AS `数据总大小(MB)`,
    ROUND(SUM(INDEX_LENGTH) / 1024 / 1024, 2) AS `索引总大小(MB)`,
    ROUND(SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS `总占用空间(MB)`,
    ROUND(SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024, 2) AS `总占用空间(GB)`
FROM 
    information_schema.TABLES
WHERE 
    TABLE_SCHEMA = 'your_database_name'
GROUP BY 
    TABLE_SCHEMA;

执行结果

知识扩展

统计数据库下所有表的数据行数

刚开始统计数据库中有多少行数据的时候,使用 information_schema.TABLES 去统计发现误差很大 ,具体原因这里不再说明

select
table_schema as '数据库',
table_name as '表名',
table_comment as '表注释',
table_rows as '记录数',
truncate(data_length/1024/1024, 2) as '数据容量(MB)',
truncate(index_length/1024/1024, 2) as '索引容量(MB)'
from information_schema.tables
where table_schema='test'
order by table_rows desc, index_length desc;

以下是另一个方法:

执行sql,生成所有表的统计语句

select concat(
'select "',
TABLE_name,
'", count(*) as t from `',
TABLE_SCHEMA,
'`.`',
TABLE_name,
'` union all'
) from information_schema.tables

-- 排除指定库
where
 table_schema not in('mysql','information_schema','performance_schema','sys');

结果如下:

查询出来的结果拷贝出来,去掉最后一行的 union all

汇总

到此这篇关于MySQL数据库实现统计所有表的空间占用与行数的文章就介绍到这了,更多相关MySQL统计表空间占用与行数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL使用Xtrabackup备份流程详解

    MySQL使用Xtrabackup备份流程详解

    这篇文章主要介绍了MySQL使用Xtrabackup备份流程详解,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-03-03
  • MySQL忘记了root用户密码如何重置的解决方案

    MySQL忘记了root用户密码如何重置的解决方案

    MySQL是当前被广泛使用的关系型数据库,MySQL需要设置root用户的密码,用于验证登录数据库服务器,但往往可能由于各种原因导致忘记了该密码,于是就有了本次分享的内容,MySQL忘记root密码的解决方案,需要的朋友可以参考下
    2024-05-05
  • mysql5.5数据库data目录迁移方法详解

    mysql5.5数据库data目录迁移方法详解

    这篇文章主要介绍了mysql5.5数据库data目录迁移方法详解,其实数据库的目录就在你安装目录的data里面,我的实在D盘。可能大家默认安装都在C吧。这样就要迁移了。这个大家都懂需要的朋友可以参考下
    2016-04-04
  • MySql数据库基础之子查询详解

    MySql数据库基础之子查询详解

    所谓子查询是指在一个查询中嵌套了其他的若干查询,即在一个SELECT查询语句的WHERE或FROM子句中包含另一个SELECT查询语句,下面这篇文章主要给大家介绍了关于MySQL子查询的相关资料,需要的朋友可以参考下
    2022-09-09
  • mysql使用 performance_schema 进行性能监控

    mysql使用 performance_schema 进行性能监控

    MySQL5.7及以上版本引入的performance_schema是一个高效的性能监控工具,替代了旧的SHOWPROFILES,它通过系统表实时收集SQL执行、锁等待、I/O等性能数据,提供了详细的监控功能,下面就来详细的介绍一下,感兴趣的可以了解一下
    2026-03-03
  • 一文彻底讲清该如何处理mysql的死锁问题

    一文彻底讲清该如何处理mysql的死锁问题

    MySQL中的死锁问题是一个复杂而微妙的议题,尤其是在高并发的业务环境中,死锁可能导致服务的不稳定甚至数据的不一致,下面这篇文章主要介绍了该如何处理mysql的死锁问题的相关资料,需要的朋友可以参考下
    2024-10-10
  • MySQL中正则表达式用法示例详解

    MySQL中正则表达式用法示例详解

    MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配,这篇文章主要介绍了MySQL中正则表达式用法,需要的朋友可以参考下
    2025-06-06
  • 详解如何对MySQL数据库进行授权管理

    详解如何对MySQL数据库进行授权管理

    MySQL数据授权是指数据库管理员通过设置权限,控制用户对数据库中的数据的访问和操作能力,在MySQL中,每个用户账户都有特定的权限,本文给大家介绍了如何对MySQL数据库进行授权管理,需要的朋友可以参考下
    2024-11-11
  • 保证MySQL与Redis数据一致性的6种实现方案

    保证MySQL与Redis数据一致性的6种实现方案

    这篇文章将聚焦在一个非常重要且复杂的问题上:MySQL与Redis数据的一致性,当我们在应用中同时使用MySQL和Redis时,如何保证两者的数据一致性呢?下面就来分享几种实用的解决方案,需要的朋友可以参考下
    2024-03-03
  •  SQL 中 CASE 表达式的使用方式

     SQL 中 CASE 表达式的使用方式

    这篇文章主要介绍了 SQL 中 CASE 表达式的使用方式,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09

最新评论