MySQL 中 SQL 语句的执行过程
一个 MySQL 请求的处理流程图:
从上图可以看出,MySQL 的处理流程主要分为 4 个步骤:客户端与服务端通信、查询优化处理过程、查询执行引擎、返回结果给客户端。
1、客户端与服务端通信
一般通信方式有 3 种:单工,半双工,全双工。单工就是只能单向传输,要么 A 端给 B 端传输,要么 B 端给 A 端传输;半双工是可以双向传输的,但是同一时间只能是一个方向传输,也就是说 A 端给 B 端传输的时候,B 端只能等待,反过来也一样,B 端给 A 端传输的时候,A 端也只能等待;全双工是双向随便传输。
MySQL 客户端与服务器的通信方式是半双工的,也就是说,我们的一个数据库连接在向数据库发送数据的时候,此时这个数据库连接是不能给客户端返回数据的,一定是数据返回完毕以后,客户端才能再次发起查询操作。这也就是我们在做数据查询的时候用 where 条件 和 limit 限制数据结果行数的原因,否则客户端连接需要等到数据库把所有的查询结果返回之后,才能进行下一个操作。
从上面的分析可以看出,MySQL 数据库半双工通信模式的一个重要特点是:客户端一旦开始发送指令,服务端需要接收完毕才能响应,客户端只有在完全接收到服务端响应的数据后,才能再次发送指令。有点像对讲