MySQL客户端和服务器之间的通信协议是半双工的,这意味着,在任何一个时刻,要么是服务器向客户端发送数据,要么是由客户端向服务器发送数据,这两个动作不能同时发生。所以,我们无法,也无须将一个消息切成小块独立来发送。
这种协议让MySQL通信简单快速,但也从很多地方限制了MySQL。
一个明显的限制就是,无法进行流量控制:一旦一端开始发生消息,另一端只能接收完整个消息才能响应它。
客户端发送给服务器的语句长度限制为max_allowed_pocket,因为,一旦客户端发送了请求,它就只能等待结果了。
服务端发送给客户端的数据通常很多,由多个数据包组成。当服务器响应客户端请求时,客户端必须完整地接收整个返回结果。所以,一般大的查询结果需要限制limit。