mysql通信协议的半双工机制理解
一、通信知识中的半双工概念
通信的方式分为:单工通信,半双工,全双工。
全双工的典型例子是:打电话。电话在接到声音的同时也会传递声音。在一个时刻,线路上允许两个方向上的数据传输。网卡也是双工模式。在接收数据(比如一直在下载东西)的同时,又发送
数据(比如请求网页)
半双工:在同一个时刻只能进行一个动作。在一个时刻,线路上只允许一个方向上的数据传输。
单工:典型例子就是电视遥控器。接收端和发送端已经固定了的。接收端只能接收数据。没有发送数据的功能。发送端只有发送的功能。没有接收的功能.特点是,线路上的数据流是永远是单
方向,固定方向。
这样理解的话,显示器与电脑主机之间的工作方式也是单工模式的。
问:是半双工还是双工,到底由什么决定的?是线路还是两个方向上的设备决定的?
双工的设备条件:这种方式要求通讯双方均有发送器和接收器,同时,需要2根数据线,传送数据信号。(可能还需要控制线和状态线,以及地线)。
看来,不仅仅是两端设备。还有线的方面,这根线有些不同。可以参照电话线,网线进行理解全双工的线。
半双工的两端的设备,也有接收器和发送器。不然怎么接收和发送数据。这怎么理解?
这样理解:半双工模式下,确实有接收器和发送器。这样两端都可以发送和接收数据。但不同的是:两个动作不能同时进行。要么是一端发数据,只有等到它发送完成后,你才能或发送或接收
。
半双工与全双工的区别就在于是否能够同时进行。两种方式所能进行的操作都是一样的。
现实中使用的以太网可以设置双工和半双工的模式下工作。
技术的趋势:随着技术的不断进步,半双工会逐渐退出历史舞台。
二、关于mysql客户端/服务器通信协议的半双工机制
1.不能截断和进行流程控制:我将球发过去了,能做就是等待结果。不能说,我觉得不妥,还需要中途截断,不发给对方。所以,已经发出去的东西,无法进行流程控制。你要做的就是发信
息和等待结果。其他的什么都不能做在等待结果的时候,你也不能说:我已经找到了需要的数据。服务器你停止发送剩下的数据吧。不管你是否需要,你只能等待服务器将所有数据包发送完
毕后丢掉不要的数据。或者,你就选择断掉连接。无法进行流程控制的。
所以,使用limit子句去控制服务器发送给客户端数据的量。这样可以提高性能。
这里limit对于性能的影响之处怎么理解?
如果没有limit进行限制的话,查询出所有的数据都会发送给客户端,比如我只需要10条。但是没有限制,假如取出了100条数据.就会发送到客户端100条数据。这其中其实有些是不需要的。
在这个过程中,客户端是无法说:我已经找到我需要的10条数据,剩下的90条数据服务器请不要再发送了。由于是半双工的通信机制,那么你要做的只能等待服务器发送的100条数据全部发送
完毕,你才能进行操作。所以没有limit进行限制后,是不是增加了客户端的等待时间。对性能有影响。
根据这种半双工的机制,一般这样做:客户端需要多少条数据,我就在服务器操作的时候使用limit进行限制只取出多少条,那么只会发送需要的条数给客户端。