# 查询语句处理概述

![`smart`](DMLStatementReadsProcessOverview_aa_004_20220512.png)

----------------------------------------------------------------
一个查询过程可以简单描述为：

1. TiDB 服务器从客户端程序接收到查询请求（协议层）。

2. TiDB 服务器异步获取 SQL 语句的 start_ts，即 SQL 语句开始时的 TSO。

3. TiDB 服务器解析和编译 SQL 语句，并生成执行计划。

4. TiDB 服务器检查表的元数据和 Region 的位置信息，然后执行语句。

5. TiKV 服务器接收来自 TiDB 服务器的查询请求，执行命令并过滤数据，然后将结果返回给 TiDB 服务器。

6. TiDB 服务器组织接收到的结果并将其返回给客户端程序。

第四步可以进一步扩展为：

1. TiDB 服务器获取要查询的表的元数据。

2. TiDB 服务器生成键范围信息，并且获取每个键范围的 Region 信息。

3. TiDB 服务器根据 Region 的位置信息，并行地向 TiKV 服务器发送查询请求，以获取 Region 所在的位置。


