1. 程式人生 > >mysql遠端連線很慢解決辦法

mysql遠端連線很慢解決辦法

     伺服器重新啟動了,不知道什麼原因訪問速度特別慢,因為是開啟資料庫操作多的頁面特別明顯,由於是區域網伺服器連線,覺得資料庫問題會比較多。

   查詢資料得到結果,預設安裝的MYSQL開啟了DNS的反向解析。域名解析也可以導致網路程式慢,MySQL在處理新的執行緒連線請求時,會嘗試進行DNS解析,如果在host cache和Hosts裡找不到,處理起來就會很慢,一般來說資料庫伺服器為安全起見是不能連線到外網的,所以dns解析也沒辦法完成,這就可以解釋為什麼這麼慢了,可以在mysql的配置檔案中, 禁用該反向解析功能。

   當遠端訪問mysql時,mysql會解析域名,會導致訪問速度很慢,加上下面這個配置可解決此問題MY.INI(WINDOWS系統下)或MY.CNF(UNIX或LINUX系統下)檔案的[mysqld]下加入skip-name-resolve這一句。


配置如下:

# 禁止mysql做域名解析
 [mysqld]
 skip-name-resolve

    但是,這樣會引起一個問題:連線mysql時,不能使用 localhost連線了,而是要使用IP地址的;

 以後在使用grant對使用者進行授權時只能使用IP格式,而不能使用主機名稱了。

提供第二種方式也可以解決此問題

通過修改系統hosts檔案也可以實現,舉例來說,我想解決192.168.1.100遠端連線MySQL伺服器緩慢的問題,只需要在MySQL庫所在伺服器的hosts檔案中新增一條記錄如下:

192.168.1.100 test.com

儲存退出,再次遠端連線該MySQL庫,同樣很快。之所以說絕,是因為這樣設定,你新增記錄的192.168.1.100遠端連線速度變快了,其他主機連線速度跟之前一樣慢。該方法同樣可以解決ssh遠端連線某主機響應很慢的問題,原理一樣。

# 禁止mysql做域名解析
 [mysqld]
 skip-name-resolve 
 skip-|grant|-tables
若使用–skip-grant-tables系統將對任何使用者的訪問不做任何訪問控制,但可以用 mysqladmin flush-privileges或mysqladmin reload來開啟訪問控制;預設情況是show databases語句對所有使用者開放,如果mysql伺服器沒有開遠端帳戶,就在my.ini裡面加上skip-grant-tables 

SHOW PROCESSLIST 檢視mysql連線程序

http://blog.chinaunix.net/uid-134240-id-220211.html

http://uixor.iteye.com/blog/1055066