diff --git a/schema-cache.md b/schema-cache.md index d286f435d3ba..4ee550600fbb 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -13,11 +13,13 @@ summary: TiDB 对于 schema 信息采用基于 LRU 的缓存机制,在大量 ## 最佳实践 -- 在大量数据库和表的场景下(例如 10 万以上的数据库和表数量)或者当数据库和表的数量大到影响系统性能时,建议打开 schema 缓存特性。 +- 在大量数据库和表的场景下(例如 10 万以上的数据库和表数量)或者当数据库和表的数量大到影响系统性能时,建议打开 schema 缓存特性。以下的最佳实践主要针对该场景。在数据库和表数量较少时,可以忽略这一特性。 - 可以通过观测 TiDB 监控中 **Schema load** 下的子面板 **Infoschema v2 Cache Operation** 来查看 schema 缓存的命中率。如果命中率较低,可以调大 [`tidb_schema_cache_size`](/system-variables.md#tidb_schema_cache_size-从-v800-版本开始引入)。 - 可以通过观测 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-版本开始引入) 来缓解这一问题。 +- 在访问涉及数据库和表的系统表时,最好指定数据库和表,避免读取大量的元数据,导致影响性能甚至 TiDB OOM。 ## 已知限制