# TiFlash 的主要功能

+ 异步复制
+ 持续阅读
+ 引擎智能选择
+ 计算加速
------------------------------------------------------------------------------
TiFlash有几个核心功能，如异步复制、一致性、引擎智能选择和计算加速。

TiFlash的异步复制功能：TiFlash中的副本以特殊角色（Raft Learner）进行异步复制。这意味着，即使TiFlash节点停止工作或网络延迟很高，TiKV业务仍可确保正常运行。此复制机制还继承了TiKV系统的自动负载均衡和高可用性，无需依赖额外的复制通道，而是以多对多的方式直接从TiKV接收数据传输；只要TiKV中的数据不丢失，TiFlash中的副本随时可以恢复。

TiFlash提供与TiKV相同的快照隔离支持，并保证读取的数据是最新的（确保先前写入的数据可以被读取）。这种一致性是通过复制数据进度检查来实现的。每次收到读取请求时，TiFlash中的Region副本将向Leader副本发起一个进度检查（一个非常轻量级的RPC请求），并且只有在确保进度覆盖读取请求时间戳之后的数据时才响应读取。

TiDB 可以自动选择使用 TiFlash 列存储或 TiKV 行存储，甚至在同一查询中混合使用，以提供最佳查询性能。此选择机制类似于 TiDB 为查询服务选择不同索引，CBO 根据统计信息评估读取成本，并做出合理选择。

TiFlash用于TiDB的计算加速分为两部分：列存储本身的读取效率提升和TiDB的计算任务共享。共享计算的原理与TiKV中的Coprocessor相同：TiDB会将可以由存储层共享的计算推送下去。能否推送取决于TiFlash是否支持相关操作符的推送。