查看MySQL 数据表大小

路飞
路飞
管理员
43
文章
2字数 408阅读1分21秒

查看MySQL 数据表大小-图片1

日常工作中经常使用MySQL存储数据,于是想看看MySQL中这个数据库大小以及每个表的大小,下面总结2种方法仅供参考。

第一种

如果想知道MySQL数据库中每个表占用的空间、表记录的行数的话,可以打开MySQL的 information_schema 数据库。在该库中有一个 TABLES 表,这个表主要字段分别是:

  1. TABLE_SCHEMA: 数据库名
  2. TABLE_NAME: 表名
  3. ENGINE: 所使用的存储引擎
  4. TABLES_ROWS: 记录数
  5. DATA_LENGTH: 数据大小
  6. INDEX_LENGTH: 索引大小

其他字段请参考MySQL的手册,我们只需要了解这几个就足够了,所以要知道一个表占用空间的大小,那就相当于是 数据大小 + 索引大小 即可,举例如下:

SELECT TABLE_NAME,(DATA_LENGTH+INDEX_LENGTH) "LENGTH",TABLE_ROWS FROM TABLES 
WHERE TABLE_SCHEMA='数据库名' AND TABLE_NAME='表名'

查看MySQL 数据表大小-图片2

注明:以上LENGTH大小的单位为字节。

第二种

1、进去指定schema 数据库(存放了其他的数据库的信息)

mysql> use information_schema;
Database changed

2、查询所有数据的大小 

mysql> select concat(round(sum(DATA_LENGTH/1024/1024), 2),'MB')
    -> as data from TABLES;
+-----------+
| data      |
+-----------+
| 6674.48MB |
+-----------+
1 row inset (16.81 sec)

3、查看指定数据库实例的大小,比如说数据库 forexpert

mysql> select concat(round(sum(DATA_LENGTH/1024/1024), 2),'MB')
    -> as data from TABLES where table_schema='forexpert';
+-----------+
| data      |
+-----------+
| 6542.30MB |
+-----------+
1 row inset (7.47 sec)

4、查看指定数据库的表的大小,比如说数据库 forexpert 中的 member 表 

mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB')as data
    -> from TABLES where table_schema='forexpert'
    -> and table_name='member';
+--------+
| data   |
+--------+
| 2.52MB |
+--------+
1 row inset (1.88 sec)

 

继续阅读
weinxin
微信公众号
分享IT信息技术、北海生活的网站。提供北海本地化的信息技术服务。
 
路飞
  • 本文由 路飞 发表于2019年9月9日 20:18:49
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
    • guest
      guest 1

      支持

      • 路飞
        路飞

        good share

      匿名

      发表评论

      匿名网友
      :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
      确定