Mysql数据传输 - reactivegroup/rxdb-example GitHub Wiki

mysql数据传输模式采用半双工模式,即请求发出后不可再次请求,直到响应接收完成

MySQL客户端和服务器之间的通信协议是“半双工”的,无法将一个消息切成小块独立来发送,没法进行流量控制,一旦一端开始发生消息,另一端要接收完整个消息才能响应它

mysql服务端推送采用流式传输模式,即所有数据经查询引擎查询完毕后,将会每生成一行结果result,就通过网络传输一行

通过wireshark抓包时发现,每行数据占用一个完整的应用层协议包,但TCP可能合并多个应用层协议包来分块传输

每个mysql应用层协议包结束时应有一个EOF/FIN,用于通知该行已完毕;

在所有行传输完成后,将有一个EOF数据包传递,JDBC等BIO驱动接收到该EOF包,将会把之前所有缓存的数据全部返回给应用程序

返回结果给客户端

来源: 高性能MySQL