插件窝 干货文章 如何查看MySQL单个索引的磁盘空间使用情况?

如何查看MySQL单个索引的磁盘空间使用情况?

索引 table 使用 index 458    来源:    2025-04-01

查看MySQL单个索引的磁盘空间使用情况

在MySQL中,有几种方法可以查看单个索引占用的磁盘空间:

方法1:使用INFORMATION_SCHEMA统计信息

SELECT 
    table_schema AS '数据库',
    table_name AS '表名',
    index_name AS '索引名',
    ROUND(stat_value * @@innodb_page_size / 1024 / 1024, 2) AS '索引大小(MB)'
FROM 
    mysql.innodb_index_stats
WHERE 
    stat_name = 'size'
    AND table_schema = '你的数据库名'
    AND table_name = '你的表名'
    AND index_name = '你的索引名';

方法2:使用SHOW TABLE STATUS命令

虽然不直接显示单个索引大小,但可以查看表的总索引大小:

SHOW TABLE STATUS LIKE '表名';

然后查看Index_length字段,这是所有索引的总大小。

方法3:使用INFORMATION_SCHEMA.TABLES

SELECT 
    table_name,
    index_name,
    index_length
FROM 
    information_schema.tables
WHERE 
    table_schema = '你的数据库名'
    AND table_name = '你的表名';

方法4:使用pt-index-usage工具(Percona工具包)

如果你安装了Percona工具包,可以使用:

pt-index-usage --database=数据库名 --table=表名 用户名 -p密码

注意事项

  1. 这些方法中,innodb_index_stats提供最精确的单个索引大小信息
  2. 对于InnoDB表,索引大小通常包含在主表空间文件中(ibdata1或单独的.ibd文件)
  3. 统计信息可能不是实时更新的,可以使用ANALYZE TABLE 表名;更新统计信息

如需更详细的索引分析,可以考虑使用MySQL Workbench或其他可视化工具查看表结构信息。