# 读取的执行 

__*读取的执行*__
__*Region Cache*__
__*表的元数据信息*__
__*information schema*__

![`smart`](ExecuteandRead01_aa_005_20220512.png)
-------------------------------------------------------------
完成数据读取流程的主要有一下这些模块: Executor、DistSQL、KV、PD Client 和 TiKV Client。

首先, Executor 模块会按照执行计划分批读取数据, 在开始之前还需要做以下两件事:

1. 从 TiDB server 的缓存中获得表的元数据信息 （在 information schema 中）。

2. 获得需要读取 Region 的定位, 这个也是通过 PD Client 模块完成的, 它可以帮我们定位某个 key 的 Region 以及其所在的 TiKV server 。

但是, 为了防止对于 PD 的频繁访问, 在 TiKV Client 模块中有一个 Region Cache 组件, 用来缓存 Region 信息, 所以我们会先从 Region Cache 中读取 Region 信息, 如果没有命中再通过 PD Client 进行读取, 发现有过期信息后, 会清理 Region Cache 并重新载入。

