Mysql關於長連線短連線優劣比較

lusklusklusk發表於2020-09-23

連線完成後,如果你沒有後續的動作,這個連線就處於空閒狀態,你可以在 show processlist 命令中看到它的 Command 列顯示為“Sleep”的這一行,客戶端如果太長時間沒動靜,聯結器就會自動將它斷開。這個時間是由引數 wait_timeout 控制的,預設值是 8 小時。


長連線:指連線成功後,如果客戶端持續有請求,則一直使用同一個連線。
優勢
減少建立連線的動作,因為建立連線是會消耗資源的

劣勢
連線斷開才會釋放資源,全部使用長連線後,可能會發現有些時候 MySQL 佔用記憶體漲得特別快,這是因為 MySQL 在執行過程中臨時使用的記憶體是管理在連線物件裡面的。這些資源會在連線斷開的時候才釋放。所以如果長連線累積下來,可能導致記憶體佔用太大,被系統強行殺掉(OOM),從現象看就是 MySQL 異常重啟了。

如何解決長連線的劣勢
1、定期斷開長連線。透過判斷連線佔用的記憶體量的大小,達到閥值後,斷開連線
2、在每次執行一個比較大的操作後執行 mysql_reset_connection 來重新初始化連線資源,這個過程不需要重連和重新做許可權驗證,但是會將連線恢復到剛剛建立完時的狀態。



短連線:指每次執行完很少的幾次查詢就斷開連線,下次查詢再重新建立一個。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2723627/,如需轉載,請註明出處,否則將追究法律責任。

相關文章