# Main Functions Of Tiflash
__*TiFlash function*__
+ Asynchronous replication
+ consistency read
+ Intelligent engine selection
+ Acceleration of calculations

------------------------------------------------------------
TiFlash mainly has several core features such as asynchronous replication, consistency, intelligent engine selection, and computational acceleration.

Asynchronous replication
replica in TiFlash perform asynchronous data replication as a special character (Raft Learner). This means that when the TiFlash node goes down or the network has high latency, TiKV can still ensure normal operation.
This replication mechanism also inherits the automatic load balancing and high availability of the TiKV system: it does not rely on an additional replication pipeline, but directly receives TiKV data transmission in a many-to-many manner; and as long as the data in TiKV is not lost, a replica of TiFlash can be recover at any time.

consistency
TiFlash provides the same snapshot isolation support as TiKV, and ensures that the read data is up to date (ensuring 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 check (a very light RPC request) to the Leader replica, and only responds to reads when the progress ensures that it contains at least the data covered by the timestamp of the read request.

Intelligent engine selection
TiDB can automatically choose to use TiFlash or TiKV row store, or even mix and match within the same query to provide the best query speed. This selection mechanism is similar to TiDB's selection of different indexes to provide queries: based on statistical information, the read price is judged and reasonable choices are made.

Acceleration of calculations
TiFlash's computation acceleration of TiDB is divided into two parts: the read efficiency improvement of the column store itself and the sharing of computation for TiDB. The principle of shared computing is the same as TiKV's coprocessor: TiDB will push down calculations that can be shared by the storage layer. The ability to push down depends on whether TiFlash can support related push down.