# TiFlash的架构

![`smart`](TiFlashArchitecture_aa_002_20220516.png)
-------------------------------------------------------------
TiFlash 是 TiDB HTAP 能力的关键组件，它是 TiKV 的列式扩展。它在考虑强一致性的同时提供良好的隔离。列复制通过 Raft Learner 协议异步复制，但在读取时，通过 Raft 验证索引与 MVCC 获得快照隔离一致性隔离级别。这种架构非常好地解决了 HTAP 场景中的隔离和列同步问题。

TiFlash提供列存储，并具有高效的Coprocessor。此外，它与TiKV非常相似，都依赖于同一个Multi-Raft系统，以Region为单位复制和分发数据。

TiFlash以轻量且非阻塞的方式在TiKV集群中复制数据，用于写入，与TiKV一样，它也提供一致性读取，也就是说TiFlash可以保证读取最新的数据。TiFlash中的Region副本与TiKV中的完全对应，并将与TiKV中的Leader副本同时分割和合并。

TiFlash建议使用不同的节点从TiKV实现工作负载隔离。但是，当我们不需要业务隔离时，TiFlash也可以部署在与TiKV相同的节点上。

TiFlash不能直接接受除TiKV以外的数据写入，任何数据必须先写入TiKV，然后再同步到TiFlash。TiFlash以Raft Learner角色加入TiDB集群，TiFlash支持表级数据同步。

注意，TiFlash复制功能默认是关闭的，您需要手动启用它。

以下是摘要：
1. TiFlash无法处理高并发，一般QPS不能高于50。
2. TiFlash 区域与 TiKV 完全一致，分区也一致。
3. TiFlash适用于必须检索和读取整个表或表中大部分数据的场景。
4. TiFlash 帮助提高查询性能的关键点在于列存储、聚合操作和 Join 操作。