# 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の計算タスク共有の2つの部分に分けられます。共有計算の原理はTiKVのコプロセッサーと同じです：TiDBはストレージレイヤーで共有できる計算をプッシュダウンします。プッシュダウンできるかどうかは、TiFlashが関連するオペレーターをプッシュダウンできるかどうかによって決まります。