diff --git a/faq/manage-cluster-faq.md b/faq/manage-cluster-faq.md index 188e07a4353f..8dd4b06aaaf3 100644 --- a/faq/manage-cluster-faq.md +++ b/faq/manage-cluster-faq.md @@ -223,20 +223,18 @@ TiDB 在执行 SQL 时,预估出来每个 operator 处理了超过 10000 条 要预估 TiDB 中一张表的大小,你可以参考使用以下查询语句: -{{< copyable "sql" >}} - ```sql SELECT db_name, table_name, - ROUND(SUM(total_size / cnt), 2) Approximate_Size, + ROUND(SUM(total_size / cnt), 2) Approximate_Size_Mb, ROUND(SUM(total_size / cnt / (SELECT ROUND(AVG(value), 2) FROM METRICS_SCHEMA.store_size_amplification WHERE value > 0)), - 2) Disk_Size + 2) Disk_Size_Mb FROM (SELECT db_name, @@ -264,6 +262,40 @@ GROUP BY db_name , table_name; - `Approximate_Size` 表示压缩前表的单副本大小,该值为估算值,并非准确值。 - `Disk_Size` 表示压缩后表的大小,可根据 `Approximate_Size` 和 `store_size_amplification` 得出估算值。 +### 如何预估 TiDB 中单库的大小? + +```sql +SET @dbname = 'test'; + +SELECT + db_name, + ROUND(SUM(total_size / cnt), 2) AS approximate_size_mb, + ROUND( + SUM(total_size / cnt / ( + SELECT AVG(value) + FROM metrics_schema.store_size_amplification + WHERE value > 0 + )), + 2 + ) AS disk_size_mb +FROM ( + SELECT + db_name, + region_id, + SUM(approximate_size) AS total_size, + COUNT(*) AS cnt + FROM information_schema.tikv_region_status + WHERE db_name = @dbname + GROUP BY db_name, region_id +) t +GROUP BY db_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` 得出估算值。 +- 注意: PD 默认支持 cross-table merge,同一个 Region 可能同时映射到多张表,所以这样估算。 + + ## TiKV 管理 本小节介绍 TiKV 管理中的常见问题、原因及解决方法。