统计库表大小

– 统计最大的 5 个单表
SELECT
TABLE_NAME,
TABLE_SCHEMA,
FORMAT_BYTES(SUM(data_length)) AS ‘Data Size’,
FORMAT_BYTES(SUM(index_length)) AS ‘Index Size’,
FORMAT_BYTES(SUM(data_length+index_length)) AS ‘Total Size’
FROM
information_schema.tables
GROUP BY
TABLE_NAME,
TABLE_SCHEMA
ORDER BY
SUM(DATA_LENGTH+INDEX_LENGTH) DESC
LIMIT
5;

官网提供的两个语句感觉偏差很大,tiup ctl tidb table disk-usage准确吗?

tiup ctl tidb table disk-usage 会比直接查询 information_schema.tables 提供更准确的结果

disk-usage的结果单位是M吗

information看统计信息

tiup ctl tidb table disk-usage 更加准确。

Data_length 和 Index_length 只是逻辑上的存储空间,实际磁盘上的空间会受压缩率,三副本,编码的损耗等等影响

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
GROUP BY db_name , table_name , region_id) tabinfo
GROUP BY db_name , table_name
order by 3 desc;
用这个

也有这个脚本。这个脚本的单位是什么?

是M,但是这个也不是特别准,只能说比你上面那个准

tiup ctl tidb table disk-usage

都是估算值,在查询前可以先做下表分析操作,结果能准确点

工具就能显示,像DBeaver