Skip to content

Commit

Permalink
schema-cache: update doc for schema cache (#19263) (#19533)
Browse files Browse the repository at this point in the history
  • Loading branch information
ti-chi-bot authored Jan 13, 2025
1 parent d8c9f64 commit 9dd82ee
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions schema-cache.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,14 @@ summary: TiDB 对于 schema 信息采用基于 LRU 的缓存机制,在大量

## 最佳实践

- 在大量数据库和表的场景下(例如 10 万以上的数据库和表数量)或者当数据库和表的数量大到影响系统性能时,建议打开 schema 缓存特性。
- 可以通过观测 TiDB 监控中 **Schema load** 下的子面板 **Infoschema v2 Cache Operation** 来查看 schema 缓存的命中率。如果命中率较低,可以调大 [`tidb_schema_cache_size`](/system-variables.md#tidb_schema_cache_size-从-v800-版本开始引入)
在大量数据库和表的场景下(例如 10 万以上的数据库和表数量)或者当数据库和表的数量大到影响系统性能时,建议打开 schema 缓存特性。以下的最佳实践主要针对该场景。在数据库和表数量较少时,可以忽略以下设置。

- 可以通过观测 TiDB 监控中 **Schema load** 下的子面板 **Infoschema v2 Cache Operation** 来查看 schema 缓存的命中率。如果命中率较低(一般低于 70% 时对 QPS 和延迟会有明显的影响),如果业务对 QPS 和延迟比较敏感,建议调大 [`tidb_schema_cache_size`](/system-variables.md#tidb_schema_cache_size-从-v800-版本开始引入),并保持命中率在 85% 以上。
- 可以通过观测 TiDB 监控中 **Schema load** 下的子面板 **Infoschema v2 Cache Size** 来查看当前使用的 schema 缓存的大小。
- 建议关闭 [`performance.force-init-stats`](/tidb-configuration-file.md#force-init-stats-从-v657-和-v710-版本开始引入) 以减少 TiDB 的启动时间。
- 如果需要创建大量的表(例如 10 万张以上),建议将参数 [`split-table`](/tidb-configuration-file.md#split-table) 设置为 `false` 以减少 Region 数量,从而降低 TiKV 的内存。
- 在使用 stale read 功能时,如果使用的 schema 太老,可能会导致全量加载历史的 schema,对性能有很大影响。可以通过调大 [`tidb_schema_version_cache_limit`](/system-variables.md#tidb_schema_version_cache_limit-从-v740-版本开始引入) 来缓解这一问题。
- 在访问 INFORMATION_SCHEMA 中的系统视图时,如果视图包含库名或表名字段,建议在查询条件中明确指定数据库名和表名,以避免读取过多元数据,进而影响查询性能,甚至导致 TiDB 内存溢出 (OOM) 问题。

## 已知限制

Expand Down

0 comments on commit 9dd82ee

Please sign in to comment.