扫码阅读
手机扫码阅读

TiDB | 隐藏款“缓存表”,能解决读写热点的问题!

421 2023-09-07

TiDB 缓存表简介

TiDB 数据库工程师漆锐分享了关于TiDB读写热点问题的解决方法,特别是对TiDB v6.0.0新特性——缓存表的介绍。缓存表主要用于解决小表读热点问题,通过将小表数据缓存到TiDB Server内存中,减少对TiKV节点访问的频次,从而提升查询效率。

缓存表的优点与限制

缓存表的优点包括减少网络链路时间消耗、避免读热点导致的性能损失,以及降低查询时延。然而,它也有使用限制,如表大小不得超过64MB,不适合写操作,不能进行DDL操作。因此,适用于数据量不大、少量修改、频繁访问的场景,例如配置表、存储汇率表、银行分行信息表等。

缓存表的工作原理

漆锐详细介绍了普通表转换为缓存表的过程,包括使用`ALTER TABLE tbl_name CACHE`语句,以及相关的源码分析。过程中涵盖解析语句、生成执行器、判断表属性、计算表大小、执行SQL语句、生成DDLjob等步骤。同时,作者提到了缓存表的关键机制——lease,它确保了数据的准确性,通过在lease期间加读锁阻塞写操作。

缓存表的细节探索

文章进一步探讨了缓存表在创建后的数据读取机制。一开始,数据依旧存储在TiKV中,并非直接从缓存读取。只有在首次读取后,数据才被缓存到tidb-server内存中,并赋予lease期限,此后在lease期间内的读取都直接来自内存。关于续约问题,TiDB不会主动缓存数据,而是在数据被重新读取时才赋予新的lease期限,相当于续约。

想要了解更多,点击 查看原文