From 743f710083517c19a526339fc209b0e6903e8c64 Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Sat, 14 Sep 2024 15:42:14 +0800 Subject: [PATCH 01/17] init Signed-off-by: wjhuang2016 --- TOC.md | 1 + schema-cache.md | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 schema-cache.md diff --git a/TOC.md b/TOC.md index 2d47d46752fc..70698acad9bc 100644 --- a/TOC.md +++ b/TOC.md @@ -1026,6 +1026,7 @@ - [`schema_unused_indexes`](/sys-schema/sys-schema-unused-indexes.md) - [元数据锁](/metadata-lock.md) - [TiDB 加速建表](/accelerated-table-creation.md) + - [schema 缓存](/schema-cache.md) - UI - TiDB Dashboard - [简介](/dashboard/dashboard-intro.md) diff --git a/schema-cache.md b/schema-cache.md new file mode 100644 index 000000000000..4c5fdae79114 --- /dev/null +++ b/schema-cache.md @@ -0,0 +1,25 @@ +--- +title: schema 缓存 +aliases: ['/docs-cn/dev/information-schema-cache'] +summary: TiDB 对于 schema 信息采用缓存机制,在大量数据库和表的场景下能够显著减少 schema 信息的内存占用以及提高性能。 +--- + +# schema 缓存 + +在一些多租户的场景下,可能会存在几十万甚至上百万个数据库和表。这些数据库和表的 schema 信息如果全部加载到内存中,一方面会占用大量的内存,另一方面会导致相关的访问性能变差。 +为了解决这个问题,TiDB 引入了 schema 缓存机制。采用类似于 LRU 的机制,只将最近用到的数据库和表的 schema 信息中缓存到内存中。 + +## 配置 + +可以通过配置系统变量 [`tidb_schema_cache_size`](/system-variables.md#tidb_schema_cache_size-从-v800-版本开始引入) 来打开 schema 缓存特性。 + +## 最佳实践 + +- 在大量数据库和表的场景下,建议打开 schema 缓存特性。 +- 建议关闭 [`performance.force-init-stats`](/tidb-configuration-file.md#force-init-stats-从-v657-和-v710-版本开始引入) 以减少 TiDB 的启动时间。 +- 建议关闭 [`split-table`](/tidb-configuration-file.md#split-table) 以减少 region 数量,从而降低 TiKV 的内存。 + +## 已知限制 + +- 在大量数据库和表的场景下,统计信息不一定能够及时收集。 +- 在大量数据库和表的场景下,一些元数据信息的访问会变慢。 \ No newline at end of file From cb53a69956a252e0d62a1ce832f011404fc445fe Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Thu, 19 Sep 2024 20:47:52 +0800 Subject: [PATCH 02/17] update Signed-off-by: wjhuang2016 --- schema-cache.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/schema-cache.md b/schema-cache.md index 4c5fdae79114..b5a1515c053b 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -7,7 +7,7 @@ summary: TiDB 对于 schema 信息采用缓存机制,在大量数据库和表 # schema 缓存 在一些多租户的场景下,可能会存在几十万甚至上百万个数据库和表。这些数据库和表的 schema 信息如果全部加载到内存中,一方面会占用大量的内存,另一方面会导致相关的访问性能变差。 -为了解决这个问题,TiDB 引入了 schema 缓存机制。采用类似于 LRU 的机制,只将最近用到的数据库和表的 schema 信息中缓存到内存中。 +为了解决这个问题,TiDB 引入了 schema 缓存机制。采用类似于 LRU 的机制,只将最近用到的数据库和表的 schema 信息缓存到内存中。 ## 配置 @@ -22,4 +22,6 @@ summary: TiDB 对于 schema 信息采用缓存机制,在大量数据库和表 ## 已知限制 - 在大量数据库和表的场景下,统计信息不一定能够及时收集。 -- 在大量数据库和表的场景下,一些元数据信息的访问会变慢。 \ No newline at end of file +- 在大量数据库和表的场景下,一些元数据信息的访问会变慢。 +- 在大量数据库和表的场景下,TiDB 的启动时间会变长。开启 schema 缓冲能够缓解这个问题。 +- 在大量数据库和表的场景下,切换 schema 缓存开关需要等待一段时间。 \ No newline at end of file From 1c17ec93f1da1bb73265e5f0c20d963a1d4f1b1e Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Thu, 19 Sep 2024 20:52:50 +0800 Subject: [PATCH 03/17] fix Signed-off-by: wjhuang2016 --- schema-cache.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/schema-cache.md b/schema-cache.md index b5a1515c053b..84d45d2607f7 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -6,8 +6,7 @@ summary: TiDB 对于 schema 信息采用缓存机制,在大量数据库和表 # schema 缓存 -在一些多租户的场景下,可能会存在几十万甚至上百万个数据库和表。这些数据库和表的 schema 信息如果全部加载到内存中,一方面会占用大量的内存,另一方面会导致相关的访问性能变差。 -为了解决这个问题,TiDB 引入了 schema 缓存机制。采用类似于 LRU 的机制,只将最近用到的数据库和表的 schema 信息缓存到内存中。 +在一些多租户的场景下,可能会存在几十万甚至上百万个数据库和表。这些数据库和表的 schema 信息如果全部加载到内存中,一方面会占用大量的内存,另一方面会导致相关的访问性能变差。为了解决这个问题,TiDB 引入了 schema 缓存机制。采用类似于 LRU 的机制,只将最近用到的数据库和表的 schema 信息缓存到内存中。 ## 配置 From 317b197db21abe97d07a0f917e7c18647da0d6b6 Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Mon, 23 Sep 2024 16:16:54 +0800 Subject: [PATCH 04/17] refine Signed-off-by: wjhuang2016 --- schema-cache.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/schema-cache.md b/schema-cache.md index 84d45d2607f7..f508db747721 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -14,7 +14,9 @@ summary: TiDB 对于 schema 信息采用缓存机制,在大量数据库和表 ## 最佳实践 -- 在大量数据库和表的场景下,建议打开 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 的启动时间。 - 建议关闭 [`split-table`](/tidb-configuration-file.md#split-table) 以减少 region 数量,从而降低 TiKV 的内存。 @@ -23,4 +25,8 @@ summary: TiDB 对于 schema 信息采用缓存机制,在大量数据库和表 - 在大量数据库和表的场景下,统计信息不一定能够及时收集。 - 在大量数据库和表的场景下,一些元数据信息的访问会变慢。 - 在大量数据库和表的场景下,TiDB 的启动时间会变长。开启 schema 缓冲能够缓解这个问题。 -- 在大量数据库和表的场景下,切换 schema 缓存开关需要等待一段时间。 \ No newline at end of file +- 在大量数据库和表的场景下,切换 schema 缓存开关需要等待一段时间。 +- 在大量数据库和表的场景下,全量列举所有元数据信息的相关操作会变慢,如: + - `SHOW FULL TABLES` + - `FLASHBACK` + - `ALTER TABLE ... SET TIFLASH MODE ...` From 679e454fa933cfbe784a550a89b0c09723a9089e Mon Sep 17 00:00:00 2001 From: wjHuang Date: Mon, 23 Sep 2024 16:41:09 +0800 Subject: [PATCH 05/17] Update schema-cache.md Co-authored-by: fzzf678 <108643977+fzzf678@users.noreply.github.com> --- schema-cache.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schema-cache.md b/schema-cache.md index f508db747721..13e86a5c8f8c 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -24,7 +24,7 @@ summary: TiDB 对于 schema 信息采用缓存机制,在大量数据库和表 - 在大量数据库和表的场景下,统计信息不一定能够及时收集。 - 在大量数据库和表的场景下,一些元数据信息的访问会变慢。 -- 在大量数据库和表的场景下,TiDB 的启动时间会变长。开启 schema 缓冲能够缓解这个问题。 +- 在大量数据库和表的场景下,TiDB 的启动时间会变长。开启 schema 缓存能够缓解这个问题。 - 在大量数据库和表的场景下,切换 schema 缓存开关需要等待一段时间。 - 在大量数据库和表的场景下,全量列举所有元数据信息的相关操作会变慢,如: - `SHOW FULL TABLES` From 15aef67039ae6e81765b61ac93e633fa4614ce67 Mon Sep 17 00:00:00 2001 From: wjHuang Date: Tue, 24 Sep 2024 14:13:43 +0800 Subject: [PATCH 06/17] Update schema-cache.md Co-authored-by: xixirangrang --- schema-cache.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/schema-cache.md b/schema-cache.md index 13e86a5c8f8c..99d9f40eb9ab 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -8,6 +8,10 @@ summary: TiDB 对于 schema 信息采用缓存机制,在大量数据库和表 在一些多租户的场景下,可能会存在几十万甚至上百万个数据库和表。这些数据库和表的 schema 信息如果全部加载到内存中,一方面会占用大量的内存,另一方面会导致相关的访问性能变差。为了解决这个问题,TiDB 引入了 schema 缓存机制。采用类似于 LRU 的机制,只将最近用到的数据库和表的 schema 信息缓存到内存中。 +> **警告:** +> +> 该功能目前为实验特性,不建议在生产环境中使用。该功能可能会在未事先通知的情况下发生变化或删除。如果发现 bug,请在 GitHub 上提 [issue](https://github.com/pingcap/tidb/issues) 反馈。 + ## 配置 可以通过配置系统变量 [`tidb_schema_cache_size`](/system-variables.md#tidb_schema_cache_size-从-v800-版本开始引入) 来打开 schema 缓存特性。 From d5fe4eadafe4b3fd07eeee4084ff874283e3dba4 Mon Sep 17 00:00:00 2001 From: wjHuang Date: Tue, 24 Sep 2024 14:13:51 +0800 Subject: [PATCH 07/17] Update schema-cache.md Co-authored-by: xixirangrang --- schema-cache.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schema-cache.md b/schema-cache.md index 99d9f40eb9ab..b11d77defde2 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -18,7 +18,7 @@ summary: TiDB 对于 schema 信息采用缓存机制,在大量数据库和表 ## 最佳实践 -- 在大量数据库和表的场景下(例如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 的启动时间。 From c2dcfdca24c6efe6625796396d7c3408a07ef50e Mon Sep 17 00:00:00 2001 From: wjHuang Date: Tue, 24 Sep 2024 14:13:58 +0800 Subject: [PATCH 08/17] Update schema-cache.md Co-authored-by: xixirangrang --- schema-cache.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/schema-cache.md b/schema-cache.md index b11d77defde2..24619d125cee 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -26,11 +26,14 @@ summary: TiDB 对于 schema 信息采用缓存机制,在大量数据库和表 ## 已知限制 -- 在大量数据库和表的场景下,统计信息不一定能够及时收集。 -- 在大量数据库和表的场景下,一些元数据信息的访问会变慢。 -- 在大量数据库和表的场景下,TiDB 的启动时间会变长。开启 schema 缓存能够缓解这个问题。 -- 在大量数据库和表的场景下,切换 schema 缓存开关需要等待一段时间。 -- 在大量数据库和表的场景下,全量列举所有元数据信息的相关操作会变慢,如: +在大量数据库和表的场景下,有以下已知问题: + +- 统计信息不一定能够及时收集。 +- 一些元数据信息的访问会变慢。 +- TiDB 的启动时间会变长。开启 schema 缓存能够缓解该问题。 +- 切换 schema 缓存开关需要等待一段时间。 +- 全量列举所有元数据信息的相关操作会变慢,如: + - `SHOW FULL TABLES` - `FLASHBACK` - `ALTER TABLE ... SET TIFLASH MODE ...` From fe8dee7474b6f95cc4d954a7743daa740c6a7472 Mon Sep 17 00:00:00 2001 From: wjHuang Date: Wed, 25 Sep 2024 19:14:05 +0800 Subject: [PATCH 09/17] Update schema-cache.md Co-authored-by: Frank945946 <108602632+Frank945946@users.noreply.github.com> --- schema-cache.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schema-cache.md b/schema-cache.md index 24619d125cee..9d036e7c3191 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -1,7 +1,7 @@ --- title: schema 缓存 aliases: ['/docs-cn/dev/information-schema-cache'] -summary: TiDB 对于 schema 信息采用缓存机制,在大量数据库和表的场景下能够显著减少 schema 信息的内存占用以及提高性能。 +summary: TiDB 对于 schema 信息采用基于 LRU 的缓存机制,在大量数据库和表的场景下能够显著减少 schema 信息的内存占用以及提高性能。 --- # schema 缓存 From 59e5267d766841ffbb6fb30301fcac06881955c7 Mon Sep 17 00:00:00 2001 From: wjHuang Date: Wed, 25 Sep 2024 19:14:19 +0800 Subject: [PATCH 10/17] Update schema-cache.md Co-authored-by: Frank945946 <108602632+Frank945946@users.noreply.github.com> --- schema-cache.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schema-cache.md b/schema-cache.md index 9d036e7c3191..3486c3f62ff5 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -6,7 +6,7 @@ summary: TiDB 对于 schema 信息采用基于 LRU 的缓存机制,在大量 # schema 缓存 -在一些多租户的场景下,可能会存在几十万甚至上百万个数据库和表。这些数据库和表的 schema 信息如果全部加载到内存中,一方面会占用大量的内存,另一方面会导致相关的访问性能变差。为了解决这个问题,TiDB 引入了 schema 缓存机制。采用类似于 LRU 的机制,只将最近用到的数据库和表的 schema 信息缓存到内存中。 +在一些多租户的场景下,可能会存在几十万甚至上百万个数据库和表。这些数据库和表的 schema 信息如果全部加载到内存中,一方面会占用大量的内存,另一方面会导致相关的访问性能变差。为了解决这个问题,TiDB 引入了类似于 LRU 的机制 schema 缓存机制。只将最近用到的数据库和表的 schema 信息缓存到内存中。 > **警告:** > From e5b0142290440dccf954b5344fbd201b5dc9059b Mon Sep 17 00:00:00 2001 From: wjHuang Date: Wed, 25 Sep 2024 19:14:28 +0800 Subject: [PATCH 11/17] Update schema-cache.md Co-authored-by: Frank945946 <108602632+Frank945946@users.noreply.github.com> --- schema-cache.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schema-cache.md b/schema-cache.md index 3486c3f62ff5..9d57f0759a3f 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -22,7 +22,7 @@ summary: TiDB 对于 schema 信息采用基于 LRU 的缓存机制,在大量 - 可以通过观测 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 的启动时间。 -- 建议关闭 [`split-table`](/tidb-configuration-file.md#split-table) 以减少 region 数量,从而降低 TiKV 的内存。 +- 如果需要创建大量的表(例如 10 万张以上),建议将此参数设置为 false [`split-table`](/tidb-configuration-file.md#split-table) 以减少 region 数量,从而降低 TiKV 的内存。 ## 已知限制 From 5c621095a31bf47cbda02bc988fd8795d6f2fbc0 Mon Sep 17 00:00:00 2001 From: wjHuang Date: Thu, 26 Sep 2024 12:38:35 +0800 Subject: [PATCH 12/17] Update schema-cache.md Co-authored-by: Frank945946 <108602632+Frank945946@users.noreply.github.com> --- schema-cache.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schema-cache.md b/schema-cache.md index 9d57f0759a3f..00e77cd4d861 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -27,7 +27,7 @@ summary: TiDB 对于 schema 信息采用基于 LRU 的缓存机制,在大量 ## 已知限制 在大量数据库和表的场景下,有以下已知问题: - +- 当需要被访问的表是没有规律的,如 t1 访问一批表,t2 访问另外一批表,而且设置的 tidb_schema cache size 较小时,会导这些 schema 信息被频繁地被逐出,频繁地被缓存,造成性能抖动。该特性比较适合被频繁访问的库和表是相对固定的场景。 - 统计信息不一定能够及时收集。 - 一些元数据信息的访问会变慢。 - TiDB 的启动时间会变长。开启 schema 缓存能够缓解该问题。 From a8450b1a667e49639dfe20ff6a5dfbd478d54cdf Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Thu, 26 Sep 2024 12:39:50 +0800 Subject: [PATCH 13/17] refine Signed-off-by: wjhuang2016 --- schema-cache.md | 1 - 1 file changed, 1 deletion(-) diff --git a/schema-cache.md b/schema-cache.md index 00e77cd4d861..2af46d840c8e 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -30,7 +30,6 @@ summary: TiDB 对于 schema 信息采用基于 LRU 的缓存机制,在大量 - 当需要被访问的表是没有规律的,如 t1 访问一批表,t2 访问另外一批表,而且设置的 tidb_schema cache size 较小时,会导这些 schema 信息被频繁地被逐出,频繁地被缓存,造成性能抖动。该特性比较适合被频繁访问的库和表是相对固定的场景。 - 统计信息不一定能够及时收集。 - 一些元数据信息的访问会变慢。 -- TiDB 的启动时间会变长。开启 schema 缓存能够缓解该问题。 - 切换 schema 缓存开关需要等待一段时间。 - 全量列举所有元数据信息的相关操作会变慢,如: From 36bcefa8d7131aad974241e1d640a1a938c6f230 Mon Sep 17 00:00:00 2001 From: wjHuang Date: Thu, 26 Sep 2024 14:14:25 +0800 Subject: [PATCH 14/17] Update schema-cache.md Co-authored-by: Frank945946 <108602632+Frank945946@users.noreply.github.com> --- schema-cache.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schema-cache.md b/schema-cache.md index 2af46d840c8e..592175573137 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -6,7 +6,7 @@ summary: TiDB 对于 schema 信息采用基于 LRU 的缓存机制,在大量 # schema 缓存 -在一些多租户的场景下,可能会存在几十万甚至上百万个数据库和表。这些数据库和表的 schema 信息如果全部加载到内存中,一方面会占用大量的内存,另一方面会导致相关的访问性能变差。为了解决这个问题,TiDB 引入了类似于 LRU 的机制 schema 缓存机制。只将最近用到的数据库和表的 schema 信息缓存到内存中。 +在一些多租户的场景下,可能会存在几十万甚至上百万个数据库和表。这些数据库和表的 schema 信息如果全部加载到内存中,一方面会占用大量的内存,另一方面会导致相关的访问性能变差。为了解决这个问题,TiDB 引入了类似于 LRU 的 schema 缓存机制。只将最近用到的数据库和表的 schema 信息缓存到内存中。 > **警告:** > From 93613d63d5672d152f987f5429816d7924992358 Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Thu, 26 Sep 2024 19:15:27 +0800 Subject: [PATCH 15/17] fix Signed-off-by: wjhuang2016 --- schema-cache.md | 1 + 1 file changed, 1 insertion(+) diff --git a/schema-cache.md b/schema-cache.md index 2af46d840c8e..ab275eb47464 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -27,6 +27,7 @@ summary: TiDB 对于 schema 信息采用基于 LRU 的缓存机制,在大量 ## 已知限制 在大量数据库和表的场景下,有以下已知问题: + - 当需要被访问的表是没有规律的,如 t1 访问一批表,t2 访问另外一批表,而且设置的 tidb_schema cache size 较小时,会导这些 schema 信息被频繁地被逐出,频繁地被缓存,造成性能抖动。该特性比较适合被频繁访问的库和表是相对固定的场景。 - 统计信息不一定能够及时收集。 - 一些元数据信息的访问会变慢。 From 0fadfa77cf84c3092710a8f911ce55b1d7bdb58b Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Thu, 26 Sep 2024 22:46:05 +0800 Subject: [PATCH 16/17] Apply suggestions from code review --- schema-cache.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/schema-cache.md b/schema-cache.md index 5524c6789550..c3bf9814e8f2 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -19,10 +19,10 @@ 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-版本开始引入)。 -- 可以通过观测 TiDB 监控中 Schema load 下的子面板 Infoschema v2 Cache Size 来查看当前使用的 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 万张以上),建议将此参数设置为 false [`split-table`](/tidb-configuration-file.md#split-table) 以减少 region 数量,从而降低 TiKV 的内存。 +- 如果需要创建大量的表(例如 10 万张以上),建议将参数 [`split-table`](/tidb-configuration-file.md#split-table) 设置为 `false` 以减少 Region 数量,从而降低 TiKV 的内存。 ## 已知限制 From 8b89cca26cb2bd7815a84c8c485ad31c2a87ce82 Mon Sep 17 00:00:00 2001 From: xixirangrang Date: Fri, 27 Sep 2024 10:41:44 +0800 Subject: [PATCH 17/17] Update schema-cache.md --- schema-cache.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schema-cache.md b/schema-cache.md index c3bf9814e8f2..571f2e2df388 100644 --- a/schema-cache.md +++ b/schema-cache.md @@ -28,7 +28,7 @@ summary: TiDB 对于 schema 信息采用基于 LRU 的缓存机制,在大量 在大量数据库和表的场景下,有以下已知问题: -- 当需要被访问的表是没有规律的,如 t1 访问一批表,t2 访问另外一批表,而且设置的 tidb_schema cache size 较小时,会导这些 schema 信息被频繁地被逐出,频繁地被缓存,造成性能抖动。该特性比较适合被频繁访问的库和表是相对固定的场景。 +- 当需要被访问的表是没有规律的,如 time1 访问一批表,time2 访问另外一批表,而且设置的 `tidb_schema cache size` 较小时,会导这些 schema 信息被频繁地被逐出,频繁地被缓存,造成性能抖动。该特性比较适合被频繁访问的库和表是相对固定的场景。 - 统计信息不一定能够及时收集。 - 一些元数据信息的访问会变慢。 - 切换 schema 缓存开关需要等待一段时间。