# Core Features Of Tiflash

+ asynchronous replication
+ consistency read
+ smart selection
+ Acceleration of calculations
------------------------------------------------------------
Core characteristics

TiFlash mainly has several core features such as asynchronous replication, consistency, smart selection, and computation acceleration.

asynchronous replication

replica in TiFlash perform asynchronous data replication in a special role (Raft Learner). This means that when the TiFlash node goes down or the network is high latency, TiKV's business can still be guaranteed to run normally.

This replication mechanism also inherits the automatic load balancing and high availability of the TiKV system: instead of relying on an additional replication pipeline, the TiFlash replica can be recover at any time as long as the data in TiKV is not lost.

consistency

TiFlash provides the same snapshot isolation support as TiKV, and ensures that read data is up to date (ensures that previously written data can be read). This consistency is achieved by verifying the replication progress of the data.

Each time a read request is received, the Region replica in TiFlash initiates a progress calibration (a very light RPC request) to the Leader replica, and only responds to reads when progress ensures that at least the data covered by the read request timestamp is included.

smart selection

TiDB can automatically choose to use TiFlash column store or TiKV row store, or even mix it within the same query to provide the best query speed. This selection mechanism is similar to TiDB selecting different indexes to provide queries: judging the read replacement price based on statistics and making reasonable choices.

Acceleration of calculations

TiFlash's computation acceleration of TiDB is divided into two parts: improving the read efficiency of the column store itself and sharing the computation for TiDB. The principle of shared computing is the same as that of TiKV's coprocessor: TiDB push down computations that can be shared by the storage layer. Whether you can push down depends on whether TiFlash can support correlated push down. For details, please refer to the “Computation Push Down Supported by TiFlash” section.

