# TiKV 服务器

+ 持久数据
+ 分布式事务支持
+ 强一致性和高可用性的副本
+ 多版本并发控制（MVCC）
+ Coprocessor（表达式推导）

```
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 引擎则使用诸如写入前日志（WAL）等机制来确保数据持久性。

分布式事务支持
- 在基于Percolator事务模型的TiDB的2阶段提交过程中，锁存储空间在每个TiKV上分配独立，称为CF Lock（列族），从而实现了与TiDB服务器和PD的全局TSO时序结合的分散式2阶段提交。此外，TiDB还支持乐观锁和悲观锁两种锁定模式，并且在TiDB v5.0之后，实现了2阶段提交的第二阶段的异步提交功能。在OLTP场景中，写入延迟大大减少。

强一致性和多个副本的高可用性
- TiKV 集群采用 Multi-Raft 机制，实现多个副本的强一致性和高可用性。同时，存储在 TiKV 中的 Region 会自动拆分和合并，实现动态扩缩容。最后，PD 节点可以灵活地调度 TiKV Region，尽量避免分布式数据库常见的热点问题。

MVCC（多版本并发控制）
- MVCC（多版本并发控制）对于数据库的高并发读写要求至关重要。它是实现并发控制、隔离级别（SI）、分布式事务和快速数据恢复等功能的基础。TiKV的MVCC实现是在TiKV Key后面添加一个版本号，当历史版本数据存在一定时间后，由TiDB服务器进行垃圾回收（GC）清理。

Coprocessor（表达式推导）
- TiKV 通过 Coprocessor 功能，可以在本地节点上执行数据过滤、局部聚合等操作，从而将 SQL 计算推送到分布式存储节点上执行。这种机制不仅降低了网络交互成本，而且充分利用了资源（CPU、Cache 和内存），并且充分利用分布式存储节点进行并行处理。