TiKV & TiFlash 加速复杂业务查询
作者: 边城元元原文来源:https://tidb.net/blog/34dcd203
一、TiKV 行存 与 TiFlash 列存混合使用
TiDB 中 query 执行的示意图,可以看到在 TiDB 中一个 query 的执行会被分成两部分,一部分在 TiDB 执行,一部分下推给存储层( TiFlash/TiKV )执行。
1.1 混用原理
| 1 | TiDB 的行列混合并不是传统设计上的行存列存二选一, 而是 TiDB 可以在同一张表同时拥有行存和列存,且两者永远保持数据强一致(而非最终一致)。 || - | —————————————————————————— || 2 | 多表查询分别使用不同的引擎 TIKV 或 TiFlash 。 || 3 | TiFlash 支持 MPP 模式的查询执行,即在计算中引入跨节点的数据交换(data shuffle 过程)。 |
1.2 混用优化
二、标签系统高级筛选
通过标签(从宽表里不确定字段)和窄表特定字段组合查询客户并分页
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
使用 MPP 模式来执行查询后基本秒开,4G 2c 虚拟机 300 万数据,首次执行 1s 二次执行 0.15s
2.4 SPM 固定执行计划
固定特定查询走 TiFlash 列存查询。
三、标签下价值机构排名
3.1 根据选中的属性(多值)
使用这些值最多的排名前 3 的机构,并统计出总额
3.2 执行计划
table:c 走 TiFlash ;table:a, table:b 走 TiKV ,同时使用了列存和行存的优势。
四、总结
使用 TiKV 和 TiFlash 可以加速复杂查询,下面简单增加了使用使用场景。
如果有描述不当的地方欢迎评论指正!
谢谢 PingCAP 社区的大力支持!
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/4fc7811c382ebd42f1886ba4e】。文章转载请联系作者。
评论