# TiFlash

+ 列式存储提高分析查询效率
+ 支持强一致性和实时性
+ 业务隔离
+ 智能选择

![right](./student-guide/diagram/01-TiFlash-01-01.png)
-------------------------------------------------------------

- 列式存储提高分析查询效率
  - TiFlash 不同于 TiKV，采用了列式存储的数据结构，也可以说 TiFlash 是 TiKV 的列存版本，众所周知，列存对于统计分析查询非常友好，行存对于事务型业务友好，所以我们就可以将统计分析查询这类需要暴力扫描的业务放在 TiFlash 上来提高效率，再加 MPP （Massively Parallel Processing）功能架构的引入，将计算任务并行地分散到多个服务器节点上，在每个节点上计算完成后，将各自部分的结果汇总在一起得到最终的结果，使得在 TiFlash 上的分析查询业务更加高效。

- 支持强一致性和实时性
  - 由于越来越多的统计分析要求实时查询，TiFlash 内部使用了 Delta Main 等技术支持了对主键的实时更新和多版本读取，同时对于 TiKV ，TiFlash 以 learner 角色接入到 multi-raft 体系中，这些技术实现了对于 TiKV 数据的逻辑准实时复制和强一致性。

- 业务隔离
  - 由于之前提到的，列存对于统计分析查询（ OLAP ）非常友好，行存对于事务型业务（ OLTP ）友好，所以，TiKV 和 TiFlash 分别可以用于 OLTP 和 OLAP 两种业务场景。这样两种业务就被隔离开来，互相不会干扰。

- 智能选择
  - 无论是 TiKV 还是 TiFlash，它们的 SQL 入口都是 TiDB Server，TiDB Server 中的优化器模型可以根据 SQL 语句的特点智能选择从 TiKV 行存还是 TiFlash 列存中去读取数据