简介:TiDB统计表的大小,列出了一些方法:
1、第一种的统计方式:
基于统计表 METRICS_SCHEMA.store_size_amplification
要预估 TiDB 中一张表的大小,你可以参考使用以下查询语句:
- 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;
store_size_amplification
表示集群压缩比的平均值。除了使用SELECT * FROM METRICS_SCHEMA.store_size_amplification;
语句进行查询以外,你还可以查看 Grafana 监控 PD - statistics balance 面板下各节点的Size amplification
指标来获取该信息,集群压缩比的平均值即为所有节点的Size amplification
平均值。Approximate_Size
表示压缩前表的单副本大小,该值为估算值,并非准确值。Disk_Size
表示压缩后表的大小,可根据Approximate_Size
和store_size_amplification
得出估算值。
2、第二种统计方式:
基于INFORMATION_SCHEMA.TABLE_STORAGE_STATS统计
- select table_schema,table_name,TABLE_SIZE/1000 from INFORMATION_SCHEMA.TABLE_STORAGE_STATS where table_schema='dba_ml';
- +--------------+------------+-----------------+
- | table_schema | table_name | TABLE_SIZE/1000 |
- +--------------+------------+-----------------+
- | ff_ml | melon | 164.4330 |
- +--------------+------------+-----------------+
3 、第三种统计方式:
使用tidb-ctl:
- tiup ctl:v5.1.3 tidb table disk-usage -d sbtest -t sbtest1
- Starting component `ctl`: /root/.tiup/components/ctl/v5.1.3/ctl tidb table disk-usage -d sbtest -t sbtest1
- 2624
使用脚本方式:
- tmp=`mysql -uroot -hxxx -P4000 -Ne "SELECT table_name FROM information_schema.tables where TABLE_SCHEMA='$1'"|while read a ;do echo "$a";done`
- sum=0
- for i in $tmp
- do
- tablename=`echo $i |cut -d: -f 1`
- tablesize=`tiup ctl:v5.1.3 tidb table disk-usage -d $1 -t $tablename`
- sum=$[sum+tablesize]
- done
- echo $sum
参考资料: