如何在 MySQL 数据库管理中,查询数据库、表、索引的容量大小?我们可以在 MySQL 自带information_schema 库中的 Table 表里,找到所需信息。
在每个 MySQL 实例中,都有一个独立的 information_schema 库,它是自带的默认库,记录着这个 MySQL 实例中所有数据库的元数据、统计信息、以及有关 MySQL 的访问权限信息。这其中就包括了所有数据库、表、索引的详细信息。
本文所用到的information_schema 库中 Table 表里的字段:

  • TABLE_SCHEMA : 数据库名
  • TABLE_NAME:表名
  • ENGINE:所使用的存储引擎
  • TABLES_ROWS:记录数
  • DATA_LENGTH:数据容量大小
  • INDEX_LENGTH:索引容量大小

    1 查看 MySQL「所有库」的容量大小

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

    原文

    https://kalacloud.com/blog/how-to-get-the-sizes-of-the-tables-of-a-mysql-database/