单表有多条索引,怎么估算每条索引大概占用大小

【TiDB 版本】5.2.4
【部署方式】物理机
【操作系统】Ubuntu22.04
【集群数据量】1
【集群节点数】15
【遇到的问题:问题现象及影响】
当前通过information_schema.tables表可估算索引整体占用大小,当前该表有多条索引,怎么估算每条索引占用大小。


http://tidb节点IP:2379/dashboard 进入「集群监控」→「数据库」→「表空间」 选择目标数据库和表,即可看到表数据各索引的空间占用(按索引名拆分)

– 示例:查询 testuser 表的索引大小(MB)
SELECT
idx.index_name,
ROUND(SUM(region.size)/1024/1024, 2) AS index_size_mb
FROM information_schema.TIDB_INDEXES idx
LEFT JOIN information_schema.TIKV_REGION_STATUS region
ON region.table_id = (SELECT tidb_table_id FROM information_schema.tables WHERE table_schema=‘test’ AND table_name=‘user’)
AND region.index_id = idx.index_id
WHERE idx.table_schema = ‘test’
AND idx.table_name = ‘user’
GROUP BY idx.index_name;

SELECT *
FROM information_schema.tidb_indexes
WHERE table_schema=‘库名’
AND table_name=‘表名’;

这个详细

统计下这些索引的 region id,然后对这些region id的大小进行求和,除以压缩比,再除以副本数,就是索引单副本占的总存储空间。相关信息都存储在下面这2张表里面:
metrics_schema.store_size_amplification
information_schema.tikv_region_status

indexes字典视图里面有占用的块数量统计

嗯,都是康TIDB_INDEXES表

适用于「有权限登录 TiDB 服务器 / PD」的场景,直接获取 TiKV 中索引的实际占用大小,无需手动计算

学习了

优秀!