zoukankan      html  css  js  c++  java
  • mysql通信协议的半双工机制理解

    一、通信知识中的半双工概念

    通信的方式分为:单工通信,半双工,全双工。

    全双工的典型例子是:打电话。电话在接到声音的同时也会传递声音。在一个时刻,线路上允许两个方向上的数据传输。网卡也是双工模式。在接收数据(比如一直在下载东西)的同时,又发送

    数据(比如请求网页)

    半双工:在同一个时刻只能进行一个动作。在一个时刻,线路上只允许一个方向上的数据传输。


    单工:典型例子就是电视遥控器。接收端和发送端已经固定了的。接收端只能接收数据。没有发送数据的功能。发送端只有发送的功能。没有接收的功能.特点是,线路上的数据流是永远是单

    方向,固定方向。
    这样理解的话,显示器与电脑主机之间的工作方式也是单工模式的。








    问:是半双工还是双工,到底由什么决定的?是线路还是两个方向上的设备决定的?

    双工的设备条件:这种方式要求通讯双方均有发送器和接收器,同时,需要2根数据线,传送数据信号。(可能还需要控制线和状态线,以及地线)。 

    看来,不仅仅是两端设备。还有线的方面,这根线有些不同。可以参照电话线,网线进行理解全双工的线。




    半双工的两端的设备,也有接收器和发送器。不然怎么接收和发送数据。这怎么理解?
    这样理解:半双工模式下,确实有接收器和发送器。这样两端都可以发送和接收数据。但不同的是:两个动作不能同时进行。要么是一端发数据,只有等到它发送完成后,你才能或发送或接收



    半双工与全双工的区别就在于是否能够同时进行。两种方式所能进行的操作都是一样的。


    现实中使用的以太网可以设置双工和半双工的模式下工作。


    技术的趋势:随着技术的不断进步,半双工会逐渐退出历史舞台。






    二、关于mysql客户端/服务器通信协议的半双工机制

    1.不能截断和进行流程控制:我将球发过去了,能做就是等待结果。不能说,我觉得不妥,还需要中途截断,不发给对方。所以,已经发出去的东西,无法进行流程控制。你要做的就是发信

    息和等待结果。其他的什么都不能做在等待结果的时候,你也不能说:我已经找到了需要的数据。服务器你停止发送剩下的数据吧。不管你是否需要,你只能等待服务器将所有数据包发送完

    毕后丢掉不要的数据。或者,你就选择断掉连接。无法进行流程控制的。

    所以,使用limit子句去控制服务器发送给客户端数据的量。这样可以提高性能。

    这里limit对于性能的影响之处怎么理解?

    如果没有limit进行限制的话,查询出所有的数据都会发送给客户端,比如我只需要10条。但是没有限制,假如取出了100条数据.就会发送到客户端100条数据。这其中其实有些是不需要的。
    在这个过程中,客户端是无法说:我已经找到我需要的10条数据,剩下的90条数据服务器请不要再发送了。由于是半双工的通信机制,那么你要做的只能等待服务器发送的100条数据全部发送

    完毕,你才能进行操作。所以没有limit进行限制后,是不是增加了客户端的等待时间。对性能有影响。

    根据这种半双工的机制,一般这样做:客户端需要多少条数据,我就在服务器操作的时候使用limit进行限制只取出多少条,那么只会发送需要的条数给客户端。

  • 相关阅读:
    Xcode8 1 创建coreData的ManagedObject后,报错 linker command failed with exit code 1
    在IOS中根据圆心坐标、半径和角度计算圆弧上的点坐标
    NodeJS学习目录
    nodeJS之URL
    nodeJS之域名DNS
    初识nodeJS
    使用nodeJS实现前端项目自动化之项目构建和文件合并
    nodeJS之fs文件系统
    nodeJS之二进制buffer对象
    nodeJS之进程process对象
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/10143045.html
Copyright © 2011-2022 走看看