# DML 语句读流程概要

__*SQL 语句读流程概要*__

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

-------------------------------------------------------------
DML 语句的读取流程可以简要描述为:

1. 收到来自客户端的查询（select）请求。 （Protocol Layer）

2. 异步获取 SQL 语句的 start_ts, 也就是 SQL 语句开始的 TSO。

3. 解析与编译 SQL 语句并生成执行计划。（Parse,Compile）

4. 查询表元数据、region 的位置信息后开始执行。（Execute）

5. TiKV 收到 TiDB 的查询请求,执行并过滤后返回给 TiDB server。

6. TiDB Server 将收到的结果进行整理,并返回给客户端。

其中第 4 步可以继续展开为:

1. 获取要查询表的元数据。

2. 生成 key range 信息,并获取每个 key range 所在的 regions 信息。

3. TiDB Server 根据 regions 的定位信息,并发向 region 所在的 TiKV 发送查询请求。