怎麼將短連線修改為長連線 mysql 聯結器

2021-10-11 13:45:29 字數 991 閱讀 8246

mysql 的聯結器是msyql server層的第乙個模組。當我們用mysql 客戶端來連線mysql伺服器的時候,處理這個連線請求的就是聯結器模組。

mysql客戶端和伺服器端的連線使用的是tcp協議,在完成tcp握手之後,聯結器開始進行身份認證。

如果使用者名稱或密碼不對,那麼聯結器會丟擲乙個 "access denied for user"的錯誤,客戶端結束執行。

如果使用者名稱密碼認證通過,那麼聯結器會到許可權表中查出賬號擁有的許可權。以後所有的許可權判斷都是基於此時查出的許可權。這意味著,乙個使用者成功建立連線後,即使root使用者修改了這個使用者的許可權,對之前的連線也不能生效。只有修改之後生成的連線才能獲取到新的許可權。

連線建立成功後,如果長時間沒有操作,聯結器會自動斷開連線。斷開連線的時間是由wait_timeout控制的,預設值是8小時。

如果連線被斷開後,客戶端再次發生請求,會收到「lost connection to mysql server during query」的錯誤提示。這時候想要執行查詢,就需要重連了。

使用show processlist 可以檢視系統所有連線的資訊。其中command 列表示 連線的狀態,「sleep」 表示 連線是乙個空間的連線,沒有進行操作。

mysq的長連線是指連線成功後,客戶端有持續的請求,使用的一直是同乙個連線。短連線是指每次執行完少量的操作後就斷開連線,下次使用在重新建立連線。

因為連線過程比較複雜,所以推薦使用長連線。

但是使用長連線,會存在占用記憶體大的問題。這是因為在長連線中申請的臨時記憶體會一直存在,只有當連線斷開的時候才釋放。

解決長連線占用記憶體大的問題有兩個方法 1)定期斷開長連線,清楚長連線占用的記憶體。 2) mysql 5.7 或者更高的版本,可以執行 mysql_reset_connection 來重新初始化連線。這個過程不需要重新建立連線,但是會釋放占用的臨時記憶體,將連線恢復到剛剛創立連線的狀態。

長連線 短連線

長連線在web中的運用 如果沒有客戶端大量的訪問,可以採用html5的serversocket長連線 例如hudson 執行時會實時的返回當前執行的結果 vmstat 監控 b 長連線 資料庫連線 短連線 http連線 b b 一 長連線與短連線 b 長連線 client方與server方先建立連線...

長連線 短連線

http協議的長連線和短連線,實質上是tcp協議的長連線和短連線。http屬於應用層協議,在傳輸層使用tcp協議,在網路層使用ip協議。ip協議主要解決網路路由和定址問題,tcp協議主要解決如何在ip層之上可靠的傳遞資料報。http是乙個無狀態的面向連線的協議,無狀態不代表http不能保持tcp連線...

長連線 短連線

參考鏈結 怎麼理解tcp的面向連線和udp的無連線 不面向連線 長連線的幾種實現方式 關於長連線和短連線的理解及使用場景 連線其實只是雙方都維護了乙個狀態,通過每一次通訊來維護狀態的變更 在 http 1.0 中 在 http 1.1 中則 可以在一次連線中處理多個請求,並且多個請求可以重疊進行,不...