mysql通信協議的半雙工機制理解

來源:mysql通信協議的半雙工機制理解

一、通信知識中的半雙工概念

通信的方式分爲:單工通信,半雙工,全雙工。

全雙工的典型例子是:打電話。電話在接到聲音的同時也會傳遞聲音。在一個時刻,線路上允許兩個方向上的數據傳輸。網卡也是雙工模式。在接收數據(比如一直在下載東西)的同時,又發送

數據(比如請求網頁)

半雙工:在同一個時刻只能進行一個動作。在一個時刻,線路上只允許一個方向上的數據傳輸。

單工:典型例子就是電視遙控器。接收端和發送端已經固定了的。接收端只能接收數據。沒有發送數據的功能。發送端只有發送的功能。沒有接收的功能.特點是,線路上的數據流是永遠是單

方向,固定方向。
這樣理解的話,顯示器與電腦主機之間的工作方式也是單工模式的。

問:是半雙工還是雙工,到底由什麼決定的?是線路還是兩個方向上的設備決定的?

雙工的設備條件:這種方式要求通訊雙方均有發送器和接收器,同時,需要2根數據線,傳送數據信號。(可能還需要控制線和狀態線,以及地線)。

看來,不僅僅是兩端設備。還有線的方面,這根線有些不同。可以參照電話線,網線進行理解全雙工的線。

半雙工的兩端的設備,也有接收器和發送器。不然怎麼接收和發送數據。這怎麼理解?
這樣理解:半雙工模式下,確實有接收器和發送器。這樣兩端都可以發送和接收數據。但不同的是:兩個動作不能同時進行。要麼是一端發數據,只有等到它發送完成後,你才能或發送或接收

半雙工與全雙工的區別就在於是否能夠同時進行。兩種方式所能進行的操作都是一樣的。

現實中使用的以太網可以設置雙工和半雙工的模式下工作。

技術的趨勢:隨着技術的不斷進步,半雙工會逐漸退出歷史舞臺。

二、關於mysql客戶端/服務器通信協議的半雙工機制

1.不能截斷和進行流程控制:我將球發過去了,能做就是等待結果。不能說,我覺得不妥,還需要中途截斷,不發給對方。所以,已經發出去的東西,無法進行流程控制。你要做的就是發信

息和等待結果。其他的什麼都不能做在等待結果的時候,你也不能說:我已經找到了需要的數據。服務器你停止發送剩下的數據吧。不管你是否需要,你只能等待服務器將所有數據包發送完

畢後丟掉不要的數據。或者,你就選擇斷掉連接。無法進行流程控制的。

所以,使用limit子句去控制服務器發送給客戶端數據的量。這樣可以提高性能。

這裏limit對於性能的影響之處怎麼理解?

如果沒有limit進行限制的話,查詢出所有的數據都會發送給客戶端,比如我只需要10條。但是沒有限制,假如取出了100條數據.就會發送到客戶端100條數據。這其中其實有些是不需要的。
在這個過程中,客戶端是無法說:我已經找到我需要的10條數據,剩下的90條數據服務器請不要再發送了。由於是半雙工的通信機制,那麼你要做的只能等待服務器發送的100條數據全部發送

完畢,你才能進行操作。所以沒有limit進行限制後,是不是增加了客戶端的等待時間。對性能有影響。

根據這種半雙工的機制,一般這樣做:客戶端需要多少條數據,我就在服務器操作的時候使用limit進行限制只取出多少條,那麼只會發送需要的條數給客戶端。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章