当前位置:网站首页>下推计算结果缓存
下推计算结果缓存
2022-07-17 14:46:00 【添香小铺】
TiDB 从 4.0 起支持下推计算结果缓存(即 Coprocessor Cache 功能)。开启该功能后,将在 TiDB 实例侧缓存下推给 TiKV 计算的结果,在部分场景下起到加速效果。
配置
Coprocessor Cache 的配置均位于 TiDB 的 tikv-client.copr-cache 配置项中。Coprocessor 的具体开启和配置方法,见 TiDB 配置文件描述。
特性说明
所有 SQL 在单个 TiDB 实例上的首次执行都不会被缓存。
缓存仅存储在 TiDB 内存中,TiDB 重启后缓存会失效。
不同 TiDB 实例之间不共享缓存。
缓存的是下推计算结果,即使缓存命中,后续仍有 TiDB 计算。
缓存以 Region 为单位。对 Region 的写入会导致涉及该 Region 的缓存失效。基于此原因,该功能主要会对很少变更的数据有效果。
下推计算请求相同时,缓存会被命中。通常在以下场景下,下推计算的请求是相同或部分相同的:
SQL 语句完全一致,例如重复执行相同的 SQL 语句。
该场景下所有下推计算的请求都是一致的,所有请求都能利用上下推计算缓存。
SQL 语句包含一个变化的条件,其他部分一致,变化的条件是表主键或分区主键。
该场景下一部分下推计算的请求会与之前出现过的一致,部分请求能利用上下推计算结果缓存。
SQL 语句包含多个变化的条件,其他部分一致,变化的条件完全匹配一个复合索引列。
该场景下一部分下推计算的请求会与之前出现过的一致,部分请求能利用上下推计算结果缓存。
该功能对用户透明,开启和关闭都不影响计算结果,仅影响 SQL 执行时间。
检验缓存效果
可以通过执行 EXPLAIN ANALYZE 或查看 Grafana 监控面板来检查 Coprocessor 的缓存效果。
使用 EXPLAIN ANALYZE
用户可以通过 EXPLAIN ANALYZE 语句查看读表算子中的缓存命中率,示例如下:
EXPLAIN ANALYZE SELECT * FROM t USE INDEX(a); +-------------------------------+-----------+---------+-----------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------+------+ | id | estRows | actRows | task | access object | execution info | operator info | memory | disk | +-------------------------------+-----------+---------+-----------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------+------+ | IndexLookUp_6 | 262400.00 | 262400 | root | | time:620.513742ms, loops:258, cop_task: {num: 4, max: 5.530817ms, min: 1.51829ms, avg: 2.70883ms, p95: 5.530817ms, max_proc_keys: 2480, p95_proc_keys: 2480, tot_proc: 1ms, tot_wait: 1ms, rpc_num: 4, rpc_time: 10.816328ms, copr_cache_hit_rate: 0.75} | | 6.685169219970703 MB | N/A | | ├─IndexFullScan_4(Build) | 262400.00 | 262400 | cop[tikv] | table:t, index:a(a, c) | proc max:93ms, min:1ms, p80:93ms, p95:93ms, iters:275, tasks:4 | keep order:false, stats:pseudo | 1.7549400329589844 MB | N/A | | └─TableRowIDScan_5(Probe) | 262400.00 | 0 | cop[tikv] | table:t | time:0ns, loops:0 | keep order:false, stats:pseudo | N/A | N/A | +-------------------------------+-----------+---------+-----------+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+-----------------------+------+ 3 rows in set (0.62 sec)
执行结果的 execution info 列有 copr_cache_hit_ratio 信息,表示下推计算结果缓存的命中率。以上示例的 0.75 表示命中率大约是 75%。
查看 Grafana 监控面板
在 Grafana 监控中,tidb 命名空间下 distsql 子系统中可见 copr-cache 面板,该面板监控整个集群中下推计算结果缓存的命中次数、未命中次数和缓存丢弃次数。
边栏推荐
- Antd form setting array fields
- Deep Learning for Generic Object Detection: A Survey-论文阅读笔记
- Tire Defect Detection Using Fully Convolutional Network-论文阅读笔记
- Cv02 Roge matrix, rotation vector, angle
- OA系统与MES系统的异同点
- Leetcode 1310. Subarray XOR query
- A summary of C language pointer
- XSS.haozi.me刷题
- 解决邮件客户端QQ Mail及Thunderbird无法登入Outlook的问题
- Codeforces - 587e (linear basis + segment tree + difference)
猜你喜欢
随机推荐
[binomial tree] the power of the button cattle customers must brush questions
AT5147-[AGC036D]Negative Cycle【dp,模型转换】
XSS. haozi. Me brush questions
Hello JSON Schema
性能优化之@Contended减少伪共享
03-2、
At5147-[agc036d]negative cycle [DP, model conversion]
MySQL autoincrement ID, UUID and snowflake ID
夢想CMS 前臺搜索SQL注入
03-2、
Unity dropdown (editable, inputable) drop-down selection box with Text Association
02-2. Default parameters, function overloading, reference, implicit type conversion, about error reporting
梦想CMS 前台搜索SQL注入
Total number of blocking and waiting in jconsole thread panel (RPM)
Introduction to virtualization troubleshooting
Introduction to replacement technology of SAP ABAP CDs view view
Accident caused by the combination of annotation transaction + distributed lock at the read committed level -- disorder of activity purchase opportunities
Hello JSON Schema
JVM钩子hooks函数
Introduction to common distributed locks









