# DML 语句写流程概要

![center](./student-guide/diagram/05-Write-process-01-01.png)

-------------------------------------------------------------
DML 语句的写流程可以描述为：
  - 收到来自客户端的 SQL 请求。
  - 异步获取 SQL 语句的 start_ts , 也就是 SQL 语句开始的 TSO。
  - 解析与编译 SQL 语句并生成执行计划。（Parse，Compile）
  - 查询表元数据、region 的位置信息后开始执行。（Execute）
  - TiKV 收到 TiDB 的查询请求，执行并过滤后返回给 TiDB server。
  - TiDB Server 将收到的结果进行整理。
  - TiDB Server 进行两阶段提交， 修改数据并持久化，同时获得提交时的 TSO，即 commit_ts。
  - TiDB Server 向客户端返回写数据结果。

其中第 4 步可以继续展开为：
  - 获取要查询表的元数据。
  - 生成 key range 信息，并获取每个 key range 所在的 regions 信息。
  - TiDB Server 根据 regions 的定位信息，并发向 region 所在的 TiKV 发送查询请求。

我们可以看到 1 ～ 6 步骤与读取流程一致。
此图是一个简化流程，将在后面的部分展开说明。
