# 读取的执行 （继续）

__*DistSQL*__
__*KV*__

![left](./student-guide/diagram/ExecuteandRead02_aa_002_20220512.png)

-------------------------------------------------------------
其次,执行计划会经过 DistSQL 模块,转化为一个个简单的 Select 查询,也就是将那些可能会包含 JOIN,SUBQUERY 等复杂算子,涉及很多表的执行计划抽象和包装为多个单表的查询计算任务。之后作为请求通过 TiKV Client 发送给下层 TiKV 的 Coprocessor,注意一个请求可能会涉及多个 TiKV 上的多个 Region 的查询,所以 DistSQL 模块可以将请求并行发送。

TiKV 收到请求后,会先构建一个快照（snapshot）,即一个特定时间点的数据结构,查询的数据必须是最接近这个时间点的,但是不能比这个时间点新。
接下来,线程池将从 RocksDB KV 中读取数据,关于 TiKV 的 RocksDB KV 读取可以参考 Lesson 03: TiKV 中的"RocksDB - 查询","数据的读取 - ReadIndex Read","数据的读取 - Lease Read / Local Read" 和"数据的读取 - Follower Read" 中的讲解。

到此为止,DistSQL 模块请求的数据就从其所在的 TiKV 中读取出来了。

另外,我们注意如果您的 SQL 语句符合之前咱们说的点查询询询（PointGet）条件,那么处理 SQL 语句的救不是 DistSQL 模块了,而是 KV 模块,KV 模块专门负责这种根据 key 去直接查找 value 的请求。