天天看點

mysql通信協定的半雙工機制了解

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

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

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

資料(比如請求網頁)

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

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

方向,固定方向。

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

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

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

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

半雙工的兩端的裝置,也有接收器和發送器。不然怎麼接收和發送資料。這怎麼了解?

這樣了解:半雙工模式下,确實有接收器和發送器。這樣兩端都可以發送和接收資料。但不同的是:兩個動作不能同時進行。要麼是一端發資料,隻有等到它發送完成後,你才能或發送或接收

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

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

技術的趨勢:随着技術的不斷進步,半雙工會逐漸退出曆史舞台。

二、關于mysql用戶端/伺服器通信協定的半雙工機制

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

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

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

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

這裡limit對于性能的影響之處怎麼了解?

如果沒有limit進行限制的話,查詢出所有的資料都會發送給用戶端,比如我隻需要10條。但是沒有限制,假如取出了100條資料.就會發送到用戶端100條資料。這其中其實有些是不需要的。

在這個過程中,用戶端是無法說:我已經找到我需要的10條資料,剩下的90條資料伺服器請不要再發送了。由于是半雙工的通信機制,那麼你要做的隻能等待伺服器發送的100條資料全部發送

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

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

繼續閱讀