专栏首页莫韵的专栏MySQL 占用空间一键查询实践
原创

MySQL 占用空间一键查询实践

作者介绍:莫韵,高级运维工程师。devops/sre观念的支持者,曾在迅雷担任运维工程师,精通CDN、大数据、海量运维之道。 目前就职于互联网企业担任业务系统运维职位,致力于高效运维实践。

经常会遇到DB满的情况 特别是大家共用DB的时候 这时候需要找到,哪个DB比较大,哪个表比较大,默认的方法你得一个一个的查询, 毕竟这里你没法使用 du -sh 这种文件系统级别的命令 但这肯定不是偷懒程序员爱干的事。

原理很简单: MySQL在系统库中记录了这些数据,只需要使用一条SQL命令组合起来就好

| TABLE_SCHEMA | varchar(64) | NO | | | | 数据库的名字

| TABLE_NAME | varchar(64) | NO | | | | 表名

| DATA_LENGTH | bigint(21) unsigned | YES | | NULL | | 数据空间大小

| INDEX_LENGTH | bigint(21) unsigned | YES | | NULL | | 数据索引大小

详细表结构见下面

+-----------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG | varchar(512) | NO | | | |
| TABLE_SCHEMA | varchar(64) | NO | | | |  数据库的名字
| TABLE_NAME | varchar(64) | NO | | | |    表名
| TABLE_TYPE | varchar(64) | NO | | | |    
| ENGINE | varchar(64) | YES | | NULL | | 
| VERSION | bigint(21) unsigned | YES | | NULL | |
| ROW_FORMAT | varchar(10) | YES | | NULL | |
| TABLE_ROWS | bigint(21) unsigned | YES | | NULL | |
| AVG_ROW_LENGTH | bigint(21) unsigned | YES | | NULL | |
| DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |   数据空间大小
| MAX_DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |
| INDEX_LENGTH | bigint(21) unsigned | YES | | NULL | |   数据索引大小
| DATA_FREE | bigint(21) unsigned | YES | | NULL | |
| AUTO_INCREMENT | bigint(21) unsigned | YES | | NULL | |
| CREATE_TIME | datetime | YES | | NULL | |
| UPDATE_TIME | datetime | YES | | NULL | |
| CHECK_TIME | datetime | YES | | NULL | |
| TABLE_COLLATION | varchar(32) | YES | | NULL | |
| CHECKSUM | bigint(21) unsigned | YES | | NULL | |
| CREATE_OPTIONS | varchar(255) | YES | | NULL | |
| TABLE_COMMENT | varchar(2048) | NO | | | |

查询所有数据库占用磁盘空间大小的SQL语句:

select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),' MB') as data_size,
concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size
from information_schema.tables
group by TABLE_SCHEMA
order by data_length desc;

查询单个库中所有表磁盘占用大小的SQL语句:(注意替换TestDB,为你要查询的DB_NAME)

select TABLE_NAME, concat(truncate(data_length/1024/1024,2),' MB') as data_size,
concat(truncate(index_length/1024/1024,2),' MB') as index_size
from information_schema.tables where TABLE_SCHEMA = 'TestDB'
group by TABLE_NAME
order by data_length desc;

是不是很简单,一条SQL查询你要的数据,再也不担心某人偷偷用我的数据库!

相关推荐

相关推荐

SQL Server 数据加密功能解析

【腾讯云的1001种玩法】自建SQL Server迁移云SQL Server过程小记

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在腾讯云上使用自建DNS

    在腾讯云上使用自建DNS , 这是一个非常非常非常硬的需求。非常多的程序模块要求,通过DNS解析去访问调用,但是,当你把dns改为自己的,接着腾讯云提供的套件服...

    莫韵
  • linux 根分区的空间去哪里了 ?记一次根分区满的服务故障排查记录

    linux 根分区的空间去哪里了 ?记一次根分区满的服务故障排查记录。我的排查思路是先找占用没有占用,找占用的文件句柄。

    莫韵
  • 关于zk迁移的一些教训

    https://cloud.tencent.com/developer/article/1406912

    莫韵
  • 查看MYSQL表数据大小

    在MySQL数据库中,有一个内置的database叫做information_schema, 该数据库中的tables表包含了数据库中所有表的基本信息,tabl...

    后场技术
  • MySQL之表碎片简介

    对于mysql和Infobright等数据库,information_schema数据库中的表都是只读的,不能进行更新、删除和插入等操作,也不能加触发器,因为...

    AsiaYe
  • AS3 角度算法与实现

    学习as3制作动画的时候发现一个好例子,箭头指向鼠标方向很有意思跟大家分享一下,都很简单的例子,箭头实体类代码如下

    py3study
  • 只看Java视频资料能成为Java程序员吗

    目前国内从事软件开发,Java的占比是越来越高,不说别的在培训视频的绝对量上,Java几乎占据了半壁江山,很多刚接触Java的同学直接从网上搜到一些教程视频,然...

    企鹅号小编
  • Redis持久化RDB原理+伪代码实现

    Redis 分别提供了 RDB 和 AOF 两种持久化机制, 本章首先介绍 Redis 服务器保存和载入 RDB 文件的方法,重点说明 SVAE 命令和 BGS...

    憧憬博客
  • 经典加密解密函数

    <?php /** * 加密解密函数 * @param string $string 明文 或 密文 * @param string $oper...

    joshua317
  • 文件操作——举例

    我们前面提到过,并没有直接创建文件的功能,但是在写入1个不存在的文件的时候,程序是可以自动创建文件的,所以只需要把写入文件的功能中的写入操作省略掉,就仅仅是创建...

    xyj

扫码关注云+社区

领取腾讯云代金券