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

weixin_34054866發表於2011-04-12


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

通訊的方式分為:單工通訊,半雙工,全雙工。

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

資料(比如請求網頁)

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


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

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








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

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

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




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



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


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


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






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

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

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

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

所以,使用limit子句去控制伺服器傳送給客戶端資料的量。這樣可以提高效能。

這裡limit對於效能的影響之處怎麼理解?

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

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

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



相關文章