首页 > 数据库 > 国内数据库 > Tidb server功能(3)
7.tidb 缓存
7.1 虽然结果都是从 tikv 中读出,但是执行计划中使用了表连接、 hash join 、子查询,做不到从某个 tikv 中得到数据,可能散落在多个 tikv 中。从多个 tikv 中汇聚到 tidb server 的缓存中,汇聚成 2 个表,然后两表再做连接。
7.2 事务(比如要改 3g 的数据)要先放缓存中,然后提交。
7.3 线程池需要缓存。
7.4 解析、编译中用到的元数据也放在 tidb 缓存中
tidb server 缓存管理:
tidb_mem_quota_query( 每个 sql 语句或者查询默认能使用的缓存量 ) (比如 2 表关联就是这个来限制)
oom-action ( sql 超过上面阈值后,是中断显示 error ,还是记录日志行为,还是如何)
8. 热点小表缓存
热点小表概述:
大量读业务、非频繁修改、小于 64m 的表为热点表。
造成影响:
而如果一个表只占一个 region ,这样的话,那个 tikv 非常繁忙,造成性能瓶颈。
语法:
将这张小表 (haha 表 ) 缓存到 cache table 中的语句 ( 要求小于 64m)
alter table haha cache;
参数:
tidb_table_cache_lease=5
这个参数默认 5 秒。
5 秒内,用户可以从 tidb 缓存 中读表。
原理:
租约时间中,能读,不能写。租约到了,缓存表过期,缓存表不可读了。
可对表进行写操作(对 tikv ,而不是缓存表),此时读也是对 tikv 中的表读。
当写操作完成后,下一次的租约开始,从 tikv 中将数据重新缓存到缓存表中( cache table 的 refresh )。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69980685/viewspace-3016986/ ,如需转载,请注明出处,否则将追究法律责任。