tidb 小表缓存

TiDB 在 v6.0.0 版本中引入了缓存表功能。该功能适用于频繁被访问且很少被修改的热点小表,即把整张表的数据加载到 TiDB 服务器的内存中,直接从内存中获取表数据,避免从 TiKV 获取表数据,从而提升读性能
#生成测试数据
sysbench --config-file=config_new oltp_common.lua --tables=1 --table-size=100000 prepare

 

CREATE TABLE `sbtest1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`k` int(11) NOT NULL DEFAULT '0',
`c` char(120) NOT NULL DEFAULT '',
`pad` char(60) NOT NULL DEFAULT '',
PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,
KEY `k_1` (`k`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin  /* CACHED ON */

#变成缓存表

alter table sbtest1 cache;

#对缓存表执行 DDL 语句会失败。若要对缓存表执行 DDL 语句,需要先去掉缓存属性,将缓存表设回普通表后,才能对其执行 DDL 语句。
truncate table sbtest1 报错
加索引报错

#将缓存表改为普通表
ALTER TABLE users NOCACHE


往缓存表写入数据时,有可能出现秒级别的写入延迟。延迟的时长由全局环境变量 tidb_table_cache_lease 控制。
你可根据实际业务能否承受此限制带来的延迟,决定是否适合使用缓存表功能。例如,对于完全只读的场景,可以将 tidb_table_cache_lease 调大:
set global tidb_table_cache_lease=(1到10)

posted @ 2022-08-25 10:39  东哥加油!!!  阅读(102)  评论(0编辑  收藏  举报