## 结论

+ TiKV MVCC 内存引擎相关原理与使用，请参考：<https://docs.pingcap.com/zh/tidb/stable/tikv-in-memory-engine/>

+ TiKV MVCC 内存引擎相关监控指标，请参考：<https://docs.pingcap.com/zh/tidb/stable/grafana-tikv-dashboard/#in-memory-engine>

+ 如何分析过期 MVCC 版本和 key 过多，请参考：<https://docs.pingcap.com/zh/tidb/stable/analyze-slow-queries/#%E8%BF%87%E6%9C%9F-mvcc-%E7%89%88%E6%9C%AC%E5%92%8C-key-%E8%BF%87%E5%A4%9A>

+ PCTA / PCTP 考点:
  + 内存引擎只能加速扫描了大量 MVCC 版本的读请求。请参考：<https://docs.pingcap.com/zh/tidb/stable/tikv-in-memory-engine/#%E5%86%85%E5%AD%98%E5%BC%95%E6%93%8E%E8%83%BD%E5%90%A6%E5%87%8F%E5%B0%91%E5%86%99%E5%85%A5%E5%BB%B6%E6%97%B6%E6%8F%90%E9%AB%98%E5%86%99%E5%85%A5%E5%90%9E%E5%90%90>。

  + TiKV MVCC 内存引擎主要用于加速需要扫描大量 MVCC 历史版本的查询，即查询扫描的总共版本数量 (total_keys) 远大于处理的版本数量 (processed_keys)。请参考：<https://docs.pingcap.com/zh/tidb/stable/tikv-in-memory-engine#tikv-mvcc-内存引擎>。

  + TiKV MVCC 内存引擎适用于以下场景： 1.业务需要查询频繁更新或删除的记录； 2.业务需要调整 `tidb_gc_life_time`，使 TiDB 保留较长时间的历史版本（比如 24 小时）。请参考：<https://docs.pingcap.com/zh/tidb/stable/tikv-in-memory-engine/#tikv-mvcc-%E5%86%85%E5%AD%98%E5%BC%95%E6%93%8E> 。

  + 开启内存引擎之后，TiKV 会根据 Region 的读流量和 MVCC 放大程度，选择要自动加载的 Region。请参考：<https://docs.pingcap.com/zh/tidb/stable/tikv-in-memory-engine/#%E8%87%AA%E5%8A%A8%E5%8A%A0%E8%BD%BD> 。

  + 如果内存使用达到了 capacity 的 90%，并且有新的 Region 需要被载入，那么内存引擎会根据读取流量来筛选 Region 并进行驱逐。请参考：<https://docs.pingcap.com/zh/tidb/stable/tikv-in-memory-engine/#%E8%87%AA%E5%8A%A8%E5%8A%A0%E8%BD%BD> 。

  + 面板 `Region Cache Hit` 表示从内存引擎的 Region 缓存中成功读取数据的次数，面板 `Region Cache Hit Rate` 表示从内存引擎的Region 缓存的命中率。请参考：<https://docs.pingcap.com/zh/tidb/stable/grafana-tikv-dashboard/#in-memory-engine>。

  + `in-memory-engine.enable` 参数为内存引擎功能的开关，默认为 `false`，调整为 `true` 即可开启。TiKV MVCC 内存引擎在内存中缓存最近写入的 MVCC 版本，并实现独立于 TiDB 的 MVCC GC 机制，使其可快速 GC 内存中的 MVCC 记录，从而减少查询时扫描版本的个数，以达到降低请求延时和减少 CPU 开销的效果。请参考：<https://docs.pingcap.com/zh/tidb/stable/tikv-in-memory-engine/#使用方式>。

  + `in-memory-engine.capacity` 参数控制内存引擎可使用的内存大小。默认值为系统内存的 `10%`，同时最大值为 `5 GiB`，可通过手动调整配置以使用更多内存。请参考：<https://docs.pingcap.com/zh/tidb/stable/tikv-in-memory-engine/#使用方式>。

  + `in-memory-engine.mvcc-amplification-threshold` 默认为 `10`，表示在某个 Region 中读一行记录需要处理的 MVCC 版本数量超过 `10` 个时，将有可能会被加载到内存引擎中。请参考：<https://docs.pingcap.com/zh/tidb/stable/tikv-in-memory-engine/#使用方式>。

  + 内存引擎默认关闭，并且从关闭状态修改为开启状态后，需要重启 TiKV 实例。请参考：<https://docs.pingcap.com/zh/tidb/stable/tikv-in-memory-engine/#使用方式>。

  + 各个 TiKV 实例可以单独开启内存引擎功能。请参考：<https://docs.pingcap.com/zh/tidb/stable/tikv-in-memory-engine/#使用方式>。
