请教下tidb怎么统计数据库以及对应表,占用磁盘空间的大小?

【TiDB 使用环境】生产环境
【TiDB 版本】8.5.1
【部署方式】私有云
【遇到的问题:问题现象及影响】
请教下,tikv怎么统计每个库以及表占用磁盘空间的大小,最近几天磁盘涨的飞快 :joy:
通过下面这段sql查出来,Disk_Size的大小单位是MB么,但是感觉不太准。。。 :joy:,最大的表也才几十G

SELECT
    db_name,
    table_name,
    ROUND(SUM(total_size / cnt), 2) Approximate_Size,
    ROUND(SUM(total_size / cnt / (SELECT
                    ROUND(AVG(value), 2)
                FROM
                    METRICS_SCHEMA.store_size_amplification
                WHERE
                    value > 0)),
            2) Disk_Size
FROM
    (SELECT
        db_name,
            table_name,
            region_id,
            SUM(Approximate_Size) total_size,
            COUNT(*) cnt
    FROM
        information_schema.TIKV_REGION_STATUS
    WHERE
        db_name = @dbname
            AND table_name IN (@table_name)
    GROUP BY db_name , table_name , region_id) tabinfo
GROUP BY db_name , table_name;

tidb是追加式 插入数据,删除数据磁盘也不会马上释放,直接df -h看更直观
要想清理磁盘,先把saft point调小 ,然后手动compaction应该可以

table_storage_stats

看的字典视图应该不对吧

直接看information_schema.TIKV_REGION_STATUS视图,按压缩比估计

关于这个问题,TiDB的name特性在实际项目中很有价值,特别是在混合负载场景场景下。 希望这个回答对你有帮助!

df -h看下

这样查询有没有包含还没有合并的空间?

同意这种说法, 可以df -h看下