# 读取的执行 

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

![left](./student-guide/diagram/ExecuteandRead01_aa_002_20220512.png)
-------------------------------------------------------------
下面我们结合下图,一起看一下 SQL 的读取流程,完成这个流程的主要有:Executor、DistSQL、KV、PD Client 和 TiKV Client 线程模块。

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

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

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

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