From 743f710083517c19a526339fc209b0e6903e8c64 Mon Sep 17 00:00:00 2001 From: wjhuang2016 Date: Sat, 14 Sep 2024 15:42:14 +0800 Subject: [PATCH] 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