# TiFlashサーバー
+ 非同期レプリケーション
+ 一貫性
+ 列指向ストアは分析クエリの効率性を改善します
+ トランザクションおよび分析処理ワークロードの分離
+ エンジンスマート選択

![`smart`](TiFlash_aa_001_20220506.png)

--------------------------------------------------------------
TiFlashクラスタの重要な機能には次のものがあります：

非同期レプリケーション
- TiFlash のレプリカは、Raft Learner を介して非同期データレプリケーションを実行します。これは、TiFlash ノードがダウンしたり、ネットワークが高遅延を経験したりしても、TiKV は正常な操作を維持できることを意味します。このレプリケーションメカニズムは、TiKV システムの自動的なロードバランスと高可用性を継承しています：追加のレプリケーションパイプラインを必要とせず、多対多の方式で TiKV データ転送を直接受信します。また、TiKV のデータが失われていない限り、TiFlash のレプリカはいつでも復元できます。

一貫性
- TiFlashはTiKVと同じスナップショット分離サポートを提供し、読み取るデータが最新の状態であることを保証します。この一貫性は、データのレプリケーションの進捗を検証することによって達成されます。読み取りリクエストを受け取るたびに、TiFlashのRegionレプリカはLeaderレプリカへの非常に軽いRPCリクエストで進捗確認を開始し、有効なデータのみが読み取りリクエストを提供できます。

列指向ストアは分析クエリの効率性を改善します。
- TiKVとは異なり、TiFlashは列指向ストアデータ構造を使用しています。列指向ストアストレージは統計分析クエリにとてもフレンドリーで、行ストレージはトランザクションビジネスにフレンドリーなので、TiFlash上で統計分析クエリやその他フルテーブルスキャンを必要とするサービスを配置することで効率性を向上させることができます。さらに、MPP（Massively Parallel Processing）アーキテクチャの導入により、複数のサーバーノードに計算タスクを並列に分散します。各ノードで計算が完了した後、各部分の結果をまとめて最終結果を得ることで、TiFlash上の分析クエリサービスの効率性がさらに向上します。

ワークロードの分離
- 先ほども言及したように、カラムストアは統計分析クエリ（OLAP）に非常にフレンドリーであり、行ストアはトランザクション（OLTP）にフレンドリーであるため、TiKVクラスタとTiFlashクラスタはそれぞれOLTPとOLAPの2つのワークロードシナリオで使用することができます。このように、2つのワークロードは分離され、互いに干渉しません。

エンジンスマート選択
- TiKV や TiFlash というのはどちらも、その SQL ルートノードは TiDB サーバーです。TiDB サーバー内のオプティマイザーは、SQL 文の特性に応じて、TiKV の行ストアか TiFlash のカラムストアからデータを読み取るかを動的に決定できます。