查询小表,如果不被内存清理,不是就在内存中?为什么还需要小表缓存的功能
缓存了就不会被清理出去哦,在内存不足或时间过久的情况下内存中的表会被自动清理出去,感觉与ORACLE中的表keep到缓存中一样。
tidb存算分离,在内存里面的是tikv的,而小表缓存是存tidb server上
既然是热点,是经常查询的,应该不会被清理
tidb的普通membuffer只缓存了查询结果,不缓存region是吗?
两码事,存算分离,tidb小表缓存了不就不用去访问tikv了,所以少了一次网络调用,速度会更快
对于频繁访问且数据量不大的小表,将其数据完全缓存到TiDB Server的内存中可以显著减少从TiKV(TiDB的存储层)读取数据的I/O开销,从而提高读操作的性能。
TiKV缓存了,不代表没有TiDB Server到TIKV访问数据的开销。
如果类似字典之类的,也可以在业务代码里,使用缓存技术,缓存数据
membuffer 是指的什么?
tidb 节点中包含 PD client 和 KV Client,然后
PD client 会有 cache,缓存的 region 信息,减少和PD 之间的交互,可以对 tikv 的 region 直接进行访问;
这个只是缓存了pd的一些region分布信息
tidb server节点的内存,会缓存查询结果吗?只是转发了下查询结果?
SQL 层简介
TiDB 的 SQL 层,即 TiDB Server,负责将 SQL 翻译成 Key-Value 操作,将其转发给共用的分布式 Key-Value 存储层 TiKV,然后组装 TiKV 返回的结果,最终将查询结果返回给客户端。
这一层的节点都是无状态的,节点本身并不存储数据,节点之间完全对等
了解,感谢
频繁读取的热点小表,只读的热点小表适合缓存到内存中。
类似oracle表的keep cache。
cache到tidb计算节点的,少了一层与tikv的网络交互
tidb集群的计算节点比较多,不将表指定为缓存的话,感觉很难保证每个tidb节点都有这个表的完整缓存。
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。