TiKV & TiFlash 加速复杂业务查询
一、TiKV 行存 与 TiFlash 列存混合使用
TiDB 中 query 执行的示意图,可以看到在 TiDB 中一个 query 的执行会被分成两部分,一部分在 TiDB 执行,一部分下推给存储层( TiFlash/TiKV )执行。
![](https://static001.geekbang.org/infoq/27/27cb98f0ca86a933e3f0b23f79b9bf23.png)
1.1 混用原理
1.2 混用优化
![](https://static001.geekbang.org/infoq/59/5941c28318132e62008dae5b53d7d397.png)
二、标签系统高级筛选
通过标签(从宽表里不确定字段)和窄表特定字段组合查询客户并分页
![](https://static001.geekbang.org/infoq/57/57d42dbc07401531692a7043d3a151ed.png)
2.1 Read from TiKV
复制代码
4G,2c 虚拟机 300 万数据,首次执行 48 s 二次执行 0.7s
2.2 Read From TiKV & TiFlash
复制代码
4G,2c 虚拟机 300 万数据,首次执行 3s 二次执行 0.3s
2.3 TiFlash & MPP
![](https://static001.geekbang.org/infoq/83/83613dacb1bb2b9c3cea5ca54b5d9716.png)
复制代码
复制代码
使用 MPP 模式来执行查询后基本秒开,4G 2c 虚拟机 300 万数据,首次执行 1s 二次执行 0.15s
2.4 SPM 固定执行计划
复制代码
固定特定查询走 TiFlash 列存查询。
![](https://static001.geekbang.org/infoq/09/092777f216821df95df6e12faa67a1cb.png)
三、标签下价值机构排名
3.1 根据选中的属性(多值)
使用这些值最多的排名前 3 的机构,并统计出总额
![](https://static001.geekbang.org/infoq/41/41397761aae5c1402b3dff3762d99aab.png)
3.2 执行计划
table:c 走 TiFlash ;table:a, table:b 走 TiKV ,同时使用了列存和行存的优势。
![](https://static001.geekbang.org/infoq/cb/cb023982e6d5abf65fcd734de31c9b55.png)
![](https://static001.geekbang.org/infoq/30/302e0130308d0c7c4248d1b24e387afc.png)
![](https://static001.geekbang.org/infoq/3c/3cf6a26c897d7fc3588bb6d7e6032f10.png)
四、总结
使用 TiKV 和 TiFlash 可以加速复杂查询,下面简单增加了使用使用场景。
如果有描述不当的地方欢迎评论指正!
谢谢 PingCAP 社区的大力支持!
本文作者:边城元元
评论