這個問題困擾我好長時間.
今天才能解決.
現象 :
連接數據庫離奇的慢, 不過一旦連接之後, 操作數據庫是非常快的.
每次連接速度都不一樣, 時慢時快.
解決方法:
在mysql的配置文件my.ini文件 [mysqlld]加上skip-name-resolve.
或者給linux的hosts文件加上客戶端ip 域名信息, 域名信息隨便寫.也可以解決, 但這個不是最終解決方法, 一旦客戶端ip有變更,或者其他客戶端連接, 連接還是會很慢的.
這是因爲mysql的權限是用戶名@域名信息來管理導致的.
我的數據庫服務器和WAS服務器在同一個網段的其他服務器上.
每次連接數據庫的時候, MYSQL會根據請求的IP地址到hosts文件找該ip地址的域名信息.
然後再上DNS服務器反響解析該IP地址的域名信息.
再拿這個域名信息到權限表做判斷有沒有權限.
當從DNS服務器反響解析TimeOut之後(因爲局域網IP地址是在DNS上是找不到的... 所以是一直等待狀態, 最終timeout). 才被繼續往下執行.
所以導致連接慢, 但是一旦連接起來操作數據庫很快.
用skip-name-resole參數是取消反向解析的步驟.
這樣會導致權限管理這一塊不能用域名信息來管理了. 比如 [email protected]. 只能用ip來取代了.
以上只是個人的理解.......僅供參考吧!!
可能還有其他原因導致連接速度變慢..