# 读取的执行 - 继续

__*DistSQL*__
__*KV*__

![`smart`](ExecuteandRead02_aa_005_20220512.png)

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

TiKV server 收到请求后, 会先构建一个快照, 即一个特定时间点的数据结构, 查询的数据必须是最接近这个时间点的, 但是不能比这个时间点更新。

接下来, 线程池将从 RocksDB KV 中读取数据。到此为止, DistSQL 模块请求的数据就从其所在的 TiKV server 中读取出来了。

另外, 如果 SQL 语句符合 PointGet 条件, 那么处理 SQL 语句的就不是 DistSQL 模块了, 而是 KV 模块, KV 模块专门负责这种根据 key 去直接查找 value 的请求。

