sql心跳


 

 

 

 

因為interactive_timeout決定的是交互連接的時間長短,而wait_timeout決定的是非交互連接的時間長短。

 

問:為什么需要設置interactive_timeout  wait_timeout 兩個值?

因為如果數據庫默認這兩個變量的值是8小時(即28800秒)如果在8小時之內沒有連接到數據庫,等下次再連的時候就會拋連接超時,或連接關閉這樣的異常。

 

 

交互模式下,interactive-timeout取代wait-timeout 。如果客戶端是交互模式連接的服務器,那么timeout就會受制於interactive-timeout。如果客戶端是非交互模式,那么timeout受制於wait-timeout。是否交互模式連接,有客戶端決定。

 

問題1:這里為什么要同時設置interactive_timeout,wait_timeout的設置才會生效?
 並不是沒有生效,連接初始化的時候,wait_timeout會根據client的類型設置為global wait_timeout 或者interactive_timeout 值。你看到沒生效因為你用命令行登陸進去就屬於交互線程,自然被interactive_timeout 覆蓋了。
問題2:interactive的值如果設置的和wait_timeout不同,為什么Interactive_timeout會覆蓋wait_timeout?
1.在交互模式下(CLIENT_INTERACTIVE),interactive_timeout才生效,非交互模式下,不生效。
問題3:在進行MySQL優化時,因為interactive_timeout決定的是交互連接的時間長短,而wait_timeout決定的是非交互連接的時間長短。如果在進行連接配置時mysql_real_connect()最后一個參數client_flag不設置為CLIENT_INTERACTIVE,是不是interactive_timeout的值不會覆蓋wait_timeout?

問題4:為了減少長連接的數量,在設置優化時是不是可以將interactive_timeout的值設置的大些,而wait_timeout的值設置的小些?但是問題2的描述好像又不允許這樣。。。

 

客戶端與服務器之間的交互:

Web 瀏覽器(客戶端)中請求一個地址時,通過HTTP協議向服務器端發送一個請求(request),服務器端收到請求后,在Servlet中根據請求時的方法(method) 的設置get/post來響應doGet()/doPost()方法進行處理,由response對象得到PrintWriter輸出流對象out,通過out.println ()將數據形成輸出流。 
處理請求之后Java編譯器對Servlet進行編譯, 得到Class可執行文件。Class文件由Java虛擬機 來解釋執行,生成向客戶端發送的應答,然后通過HTTP協議發送給客戶端。通常返回客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM