MySQL查看数据库、表和索引的容量大小的方法

 更新时间:2025年09月25日 09:52:14   作者:我不是混子  
在我们平时工作中,如果一个业务运行很久了,可能会需要我们去看看这块业务产生的数据量有多大,比如这个业务所使用的数据库存储空间都使用了多少个G了,哪一张数据表才是大表,下面整理了一些可以拿来即用的SQL以供小伙伴们参考,需要的朋友可以参考下

一、前言

在我们平时工作中,如果一个业务运行很久了,可能会需要我们去看看这块业务产生的数据量有多大,比如这个业务所使用的数据库存储空间都使用了多少个G了,哪一张数据表才是大表,下面整理了一些可以拿来即用的SQL以供小伙伴们参考。

二、如何在 MySQL 数据库中,查询数据库、表、索引的容量大小?

在每个 MySQL 实例中,都有一个独立的 information_schema 库,它是自带的库,记录着这个 MySQL 实例中所有数据库的元数据、统计信息、以及有关 MySQL 的访问权限信息。其中就包括了所有数据库、表、索引的详细信息。

information_schema 库下有一个名为TABLES的视图,通过这个视图,可获取指定库的表名、引擎、行数等元数据‌,下面我们直接看示例sql:

1.查看MySQL中所有数据库的容量大小

SELECT
table_schema as '数据库',
sum(table_rows) as '记录数',
sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',
sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)',
sum(truncate(DATA_FREE/1024/1024, 2)) as '碎片占用(MB)'
from information_schema.tables
group by table_schema
order by sum(data_length) desc, sum(index_length) desc;

data_length、index_length、DATA_FREE等字段,所存储的容量信息单位是字节,所以我们要除以 2个1024把字节转化为可读性更强的MB。

上面只截了两个数据库的信息出来,一个数据库的总大小就是数据容量和索引容量之和。

2.查看MySQL指定数据库的容量大小

SELECT 
table_schema as '数据库',
sum(table_rows) as '记录数',
sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',
sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)',
sum(truncate(DATA_FREE/1024/1024, 2)) as '碎片占用(MB)'
from information_schema.tables
where table_schema='ry' -- 这里ry替换成你自己的数据库名
order by data_length desc, index_length desc;

3.查看MySQL指定数据库的表大小

SELECT
table_name as '表名',
(table_rows) as '记录数',
round(data_length/1024/1024, 2) as '数据容量(MB)',
round(index_length/1024/1024, 2) as '索引容量(MB)'
from information_schema.tables
where table_schema='ry'-- 你要查哪个数据库中的表
order by data_length desc, index_length desc;

4.查看指定表的详细空间信息

SELECT
table_name as '表名',
engine as '存储引擎',
table_rows as '记录数',
*round*(data_length/1024/1024, 2) as '数据容量(MB)',
*round*(index_length/1024/1024, 2) as '索引容量(MB)'
from information_schema.tables
where table_schema='ry' -- 你要查哪个数据库
      and table_name = 'seat';-- 你要查哪个数据库中的哪个表

通过以上方法,小伙伴们可以全面了解MySQL数据库中各个表的空间占用情况,为数据库优化和维护提供数据支持。

到此这篇关于MySQL查看数据库、表和索引的容量大小的方法的文章就介绍到这了,更多相关MySQL查看数据库、表和索引容量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中group_concat函数深入理解

    MySQL中group_concat函数深入理解

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,需要的朋友可以适当参考下
    2012-11-11
  • MySQL实现乐观锁的方式详解

    MySQL实现乐观锁的方式详解

    在 MySQL 中,可以通过使用乐观锁来实现并发控制,以避免数据冲突和并发更新问题,乐观锁是一种乐观的思想,它假设并发操作不会导致冲突,只有在提交更新时才会检查是否发生冲突,本文给大家介绍了Mysql如何实现乐观锁,需要的朋友可以参考下
    2023-09-09
  • Windows10下mysql 8.0.16 安装配置方法图文教程

    Windows10下mysql 8.0.16 安装配置方法图文教程

    这篇文章主要为大家详细介绍了Windows10下mysql 8.0.16 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • MySQL中一些鲜为人知的排序方式

    MySQL中一些鲜为人知的排序方式

    这篇文章主要给大家介绍了关于MySQL中一些鲜为人知的排序方式,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • windows下mysql 5.7版本中修改编码为utf-8的方法步骤

    windows下mysql 5.7版本中修改编码为utf-8的方法步骤

    mysql的默认编码是拉丁(latin1),当输入中文的时候就会报错,所以需要将编码修改为utf8,从网上找了相关教程都不可以,索性自己摸索后分享给大家,下面这篇文章主要给大家介绍了在mysql 5.7版本中如何修改编码为utf-8的方法步骤,需要的朋友可以参考下。
    2017-06-06
  • MySQL 主机被封问题解析(原因、解除方法与预防策略)

    MySQL 主机被封问题解析(原因、解除方法与预防策略)

    本文详细介绍了MySQL主机被封的原因、解除方法和预防策略,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧
    2026-01-01
  • MySql中的IFNULL、NULLIF和ISNULL用法详解

    MySql中的IFNULL、NULLIF和ISNULL用法详解

    在做项目中发现MySql里的isnull和mssql里的有点不同。接下来小编通过本文给大家介绍MySql中的IFNULL、NULLIF和ISNULL用法详解的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • Mysql建库字符集和排序规则及说明

    Mysql建库字符集和排序规则及说明

    这篇文章主要介绍了Mysql建库字符集和排序规则及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • mysql8.0.20配合binlog2sql的配置和简单备份恢复的步骤详解

    mysql8.0.20配合binlog2sql的配置和简单备份恢复的步骤详解

    这篇文章主要介绍了mysql8.0.20配合binlog2sql的配置和简单备份恢复的步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • MySQL存储过程全面解析以及和Java的类比教程

    MySQL存储过程全面解析以及和Java的类比教程

    存储过程是一种在MySQL数据库中定义和执行的可重复使用的程序单元,它允许我们将一系列的 SQL 语句组织在一起,并通过一个简单的调用来执行它们,这篇文章主要介绍了MySQL存储过程全面解析以及和Java类比的相关资料,需要的朋友可以参考下
    2025-09-09

最新评论