TiDB Cloud 上 Tiflash 列存功能初体验
作者: TiDBer_BwwIQZt0 原文来源:https://tidb.net/blog/aa9a77e9
简介:
相比于行存,TiFlash 根据强 Schema 按列式存储结构化数据,借助 ClickHouse 的向量化计算引擎,带来读取和计算双重性能优势。相较于普通列存,TiFlash 则具有实时更新、分布式自动扩展、SI(Snapshot Isolation)隔离级别读取等优势。
一:TiFlash 对 OLAP 查询加速
OLAP 类的查询通常具有以下几个特点:
· 每次查询读取大量的行,但是仅需要少量的列
· 宽表,即每个表包含着大量的列
· 查询通过一张或多张小表关联一张大表,并对大表上的列做聚合
二:TiFlash 列存引擎针对这类查询有较好的优化效果:
(1) I/O 优化
· 每次查询可以只读取需要的列,减少了 I/O 资源的使用
· 同列数据类型相同,相较于行存可以获得更高的压缩比
· 整体的 I/O 减少,令内存的使用更加高效
(2) CPU 优化
· 列式存储可以很方便地按批处理字段,充分利用 CPU Cache 取得更好的局部性
· 利用向量化处理指令并行处理部分计算
三:实验过程:
(1)创建 tidb cloud 账号
(2)创建 tidb 集群
(3)通过 tidb cloud import 导入 1000 条和 100 万条基础测试数据。
(4)创建客户、订单、产品表,插入测试数据
(5)通过上图可以看出数据已入库,并且按照行存储。并执行关联,求和操作,耗时 1229ms。
(6)构建 TIFLASH 副本
(7)如图所示,发送进行了列存储。执行相同的 SQL 查询。
结论:如图所示相同 SQL,执行计划使用了 TiFlash ,执行时间 118ms;相比未使用 TiFlash 执行时间 1229ms,速度提升了 10 倍。
备注:一条 select 查询中,可以同时使用 TIKV 和 TIFLSH,tidb 默认会根据 select 查询进行判断。
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/d696303d48a8d0828e00065e9】。文章转载请联系作者。
评论