# TiKV サーバー

+ 永続的なデータ
+ 分散トランザクションサポート
+ 強い一貫性とレプリカの高い可用性
+ マルチバージョン並行制御（MVCC）
+ コプロセッサー（式プッシュダウン）

```
ID                Role    Host        Ports        OS/Arch       Status   Data Dir               Deploy Dir
--                ----    ----        -----        -------       ------   --------               ----------
...
10.0.0.131:20160  tikv    10.0.0.131  20160/20180  linux/x86_64  Up       /tidb-data/tikv-20160  /tidb-deploy/tikv-20160
...
```

![smart](TiKV_aa_002_20220506.png)

------------------------------------------------------------
TiKVの重要な特徴には以下があります：

永続的なデータ
- TiKV は、LSM-tree データ構造を基にした RocksDB エンジンをデータ永続性ストレージエンジンとして選択しましたが、RocksDB エンジンは、データ永続性を保証するための write-ahead logging (WAL) などのメカニズムを使用しています。

分散トランザクションサポート
- TiDBはPercolatorトランザクションモデルに基づいた2フェーズコミットプロセスでは、各TiKV上に別々にロックストレージスペースが割り当てられ、CF Lock（カラムファミリー）と呼ばれることで、TiDBサーバーとPDのグローバルTSOタイミングと組み合わせて分散型の2フェーズコミットが実現されます。また、TiDBはオプティミスティックロッキングとペシミスティックロッキングの2つのロッキングモードをサポートし、TiDB v5.0以降では2フェーズコミットの第2フェーズ非同期コミット機能が実装されました。OLTPシナリオでは書き込み遅延が大幅に削減されました。

強い一貫性と、複数のレプリカの高い可用性
- TiKVクラスタは、複数のレプリカの強い一貫性と高い可用性を実現するためにMulti-Raftメカニズムを採用しています。同時に、TiKVに格納されているRegionは自動的に分割およびマージされ、動的なスケーリングを実現します。最後に、PDノードはTiKV Regionを柔軟にスケジュールし、分散データベースの共通の問題（ホットスポット問題など）を最大限に回避します。

`MVCC`
- MVCC（複数バージョンの同時制御）は、データベースの高い同時読み書き要件に不可欠です。これは、同時制御、分離レベル（SI）、分散トランザクション、および高速データの復元などの機能を実装するための基礎となります。TiKV MVCCは、TiKVキーの後にバージョン番号を追加することによって実装され、履歴バージョンデータが一定期間存在した場合、TiDBサーバーによってガベージコレクション（GC）のためにクリーンアップされます。

コプロセッサー（式プッシュダウン）
- TiKV は、コプロセッサー 機能を使用して、ローカルノード上でデータフィルタリングや部分集計などを実行できるようになります。これにより、SQL 計算を分散ストレージノードにプッシュダウンして実行できます。このメカニズムは、ネットワークインタラクションコストを低減するだけでなく、リソース（CPU、キャッシュ、メモリ）を最大限に活用し、分散ストレージノードを並列処理に最大限に活用することができます。