MySQL统计数据库和表大小

MySQL统计数据库的schema和table时,可以通过以下SQL命令进行查询。
  • 查看该数据库实例下所有库大小(单位:MB)
mysql> select table_schema,sum(data_length)/1024/1024 as data_length,sum(index_length)/1024/1024   as index_length,sum(data_length+index_length)/1024/1024 as sum from information_schema.tables;
+--------------------+-------------+--------------+-------------+
| table_schema       | data_length | index_length | sum         |
+--------------------+-------------+--------------+-------------+
| information_schema | 13.09417629 |   1.83886719 | 14.93304348 |
+--------------------+-------------+--------------+-------------+
  • 查询MySQL数据库里面的所有数据库各自占用大小
mysql> select table_schema, sum(data_length+index_length)/1024/1024 as total_mb, sum(data_length)/1024/1024 as data_mb, sum(index_length)/1024/1024 as index_mb, count(*) as tables, curdate() as today from information_schema.tables group by table_schema order by 2 desc;
+--------------------+-------------+------------+------------+--------+------------+
| table_schema       | total_mb    | data_mb    | index_mb   | tables | today      |
+--------------------+-------------+------------+------------+--------+------------+
| weijing_co         | 10.15625000 | 9.21875000 | 0.93750000 |     23 | 2020-05-17 |
| iweijing_cn        |  3.87500000 | 3.07812500 | 0.79687500 |     23 | 2020-05-17 |
| mysql              |  0.89202785 | 0.79730129 | 0.09472656 |     28 | 2020-05-17 |
| information_schema |  0.00976563 | 0.00000000 | 0.00976563 |     59 | 2020-05-17 |
| performance_schema |  0.00000000 | 0.00000000 | 0.00000000 |     52 | 2020-05-17 |
+--------------------+-------------+------------+------------+--------+------------+
  • 查询MySQL数据库里面的单个数据库占用大小
mysql> SELECT CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),'MB') AS data_size, CONCAT(TRUNCATE(SUM(max_data_length)/1024/1024,2),'MB') AS max_data_size, CONCAT(TRUNCATE(SUM(data_free)/1024/1024,2),'MB') AS data_free, CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') AS index_size FROM information_schema.tables WHERE TABLE_SCHEMA = 'weijing_co';
+-----------+--------------------+-----------+------------+
| data_size | max_data_size      | data_free | index_size |
+-----------+--------------------+-----------+------------+
| 9019.79MB | 1677453164543.99MB | 0.00MB    | 626.09MB   |
+-----------+--------------------+-----------+------------+
  • 查看单个表的状态
mysql> show table status from 'weijing_co' where name = 'users'\G;
*************************** 1. row ***************************
           Name: users
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 3
 Avg_row_length: 5461
    Data_length: 16384
Max_data_length: 0
   Index_length: 49152
      Data_free: 0
 Auto_increment: 4
    Create_time: 2020-03-20 16:43:48
    Update_time: NULL
     Check_time: NULL
      Collation: utf8mb4_unicode_520_ci
       Checksum: NULL
 Create_options: 
        Comment: 
1 row in set (0.00 sec)
  • MySQL数据库里面的单个数据库所有表各自占用大小
mysql> 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 = 'weijing_co' group by TABLE_NAME order by data_length desc;
+------------------------------+-----------+------------+
| TABLE_NAME                   | data_size | index_size |
+------------------------------+-----------+------------+
| posts                        | 997.50 MB | 0.12 MB    |
| options                      | 31.10 MB  | 0.03 MB    |
| meta                         | 40.20 MB  | 0.14 MB    |
| indexable                    | 50.07 MB  | 0.04 MB    |
| comments                     | 0.01 MB   | 0.07 MB    |
| users                        | 0.01 MB   | 0.04 MB    |
| terms                        | 0.01 MB   | 0.03 MB    |
+------------------------------+-----------+------------+
  • 查询MySQL数据库里面的单个数据库指定表占用大小
mysql> SELECT CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),'MB') AS data_size, CONCAT(TRUNCATE(SUM(max_data_length)/1024/1024,2),'MB') AS max_data_size, CONCAT(TRUNCATE(SUM(data_free)/1024/1024,2),'MB') AS data_free, CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') AS index_size FROM information_schema.tables WHERE TABLE_NAME = 'wp_posts';
+-----------+---------------+-----------+------------+
| data_size | max_data_size | data_free | index_size |
+-----------+---------------+-----------+------------+
| 9.01MB    | 0.00MB        | 8.00MB    | 0.18MB     |
+-----------+---------------+-----------+------------+
1 row in set (0.00 sec)

发表评论