# TiDB 读流程简述（A）

![left](./student-guide/diagram/27-Read-process-01-01.png)
-------------------------------------------------------------
TiDB 读流程简述

为便于理解，我们先简单的了解下 TiDB 内部处理读流程的细节，以下是一个简化的描述：

TiDB Server 数据读流程的步骤如下：
- 从客户端的 Socket 读取一条 SQL
- 获取一个 Token
- 从 PD 获取 TSO
- 使用 Parser 将 SQL parse 为 AST
- 逻辑优化，物理优化
- 将 AST compile 为执行计划
- 执行上一步得到的执行计划
  - Executor.Open()： 最底层的 Executor 会根据这条 SQL 处理的 Key 范围构建出多个要下发到 TiKV 的请求，并通过 distsql 的 API 将这些请求分发到 TiKV
  - Executor.Next()：最底层的 Executor 会将 distsql 返回的数据返回给上层 Executor
