fengzhencai 发表于 2023-8-14 12:09:31

mysql如何查询每个索引占用空间大小

在mysql5.7版本中,如何能查到表里具体某个索引的大小? 是根据字段大小,所有字段长度加起来然后乘以行数去预估大小吗?

yejr 发表于 2023-8-14 13:47:13

可以利用innodb_space 或 innblock扫描索引结构,统计各个索引占用的page数量,即可计算出索引物理大小

具体可参考这几篇文章

- InnoDB表聚集索引层高什么时候发生变化, https://mp.weixin.qq.com/s/o4fHfIG6MAG460Pw7p7Msg
- 浅析InnoDB索引结构, https://mp.weixin.qq.com/s/yfi5XikDJlh6-nS-eoJbcA
- innblock | InnoDB page观察利器, https://mp.weixin.qq.com/s/sFaQ2dFIvZk7ujUuC6x70A

多问下,你想查看这个的目的是什么呢

fander 发表于 2023-8-16 12:32:48

你提的问题非常有意思。我查阅了sys库等mysql元数据库信息,好像没办法直接解决你的需求。叶老师推荐的工具见 https://github.com/jeremycole/innodb_ruby/wiki
这是一个MySQL专家维护的开源软件,是不建议直接用于生产环境的。并且他也不支持8.0。

这个是一个很好的给MySQL feature需求,你看看是否可以给MySQL官方提这个开发需求,或者给GreatSQL提,哈哈。

yejr 发表于 2023-8-16 14:53:57

fander 发表于 2023-8-16 12:32
你提的问题非常有意思。我查阅了sys库等mysql元数据库信息,好像没办法直接解决你的需求。叶老师推荐的工具 ...

先了解目的哈,看是否大众需求,如果需求确实有必要那就可以提 :)
页: [1]
查看完整版本: mysql如何查询每个索引占用空间大小