暂无图片
如何使用tidb缓存表特性提升小表读性能
最近更新:2023-06-19 10:07:52

适用范围

适用于linux平台下配置tidb 6.x集群中频繁被访问且很少被修改的热点小表,表大小小于64MB且不能为分区表。

方案概述

tidb缓存表把整张表的数据加载到TiDB服务器的内存中,直接从内存中获取表数据,避免从 TiKV 获取表数据,从而提升读性能。

实施步骤

前置准备

1.已配置tidb 6.x集群且运行正常

使用场景

TiDB 缓存表功能适用于以下特点的表:

  • 表的数据量不大
  • 只读表,或者几乎很少修改
  • 表的访问很频繁,期望有更好的读性能

当表的数据量不大,访问又特别频繁的情况下,数据会集中在 TiKV 一个 Region 上,形成热点,从而影响性能。因此,TiDB 缓存表的典型使用场景如下:

  • 配置表,业务通过该表读取配置信息
  • 金融场景中的存储汇率的表,该表不会实时更新,每天只更新一次
  • 银行分行或者网点信息表,该表很少新增记录项

以配置表为例,当业务重启的瞬间,全部连接一起加载配置,会造成较高的数据库读延迟。如果使用了缓存表,则可以解决这样的问题。

配置步骤

1.创建配置测试表,并插入测试数据

CREATE TABLE config01 (
  id int(11) NOT NULL,
  name varchar(36) NOT NULL,
  value varchar(36) NOT NULL,
  enabled tinyint(1) DEFAULT '1',
  primary key(id)
);

insert into config01 values (1,'n1','v1',1);
insert into config01 values (2,'n2','v2',0);
insert into config01 values (3,'n3','v3',1);
insert into config01 values (4,'n4','v4',1);
insert into config01 values (5,'n5','v5',0);

2.通过 ALTER TABLE 语句,将表config01设置成缓存表:

ALTER TABLE config01 CACHE;

Query OK, 0 rows affected (0.01 sec)

3.验证config01是否为缓存表

......