遠端連線mysql速度慢的解決方法

2021-06-01 13:21:17 字數 1449 閱讀 6678

php遠端連線mysql速度慢,有時遠端連線到mysql用時4-20秒不等,本地連線mysql正常,出現這種問題的主要原因是,預設安裝的 mysql開啟了dns的反向解析,在my.ini(windows系統下)或my.cnf(unix或linux系統下)檔案的[mysqld]下加入 skip-name-resolve這一句。

在區域網內連線其他機器的mysql,發現速度慢的很,不知道什麼原因,總有幾秒的延遲.

後來在網上發現解決方法,my.cnf裡面新增

[mysqld]

skip-name-resolve

skip-grant-tables

這樣速度就快了!

skip-name-resolve

選項就能禁用dns解析,連線速度會快很多。不過,這樣的話就不能在mysql的授權表中使用主機名了而只能用ip格式。

若使用–skip-grant-tables系統將對任何使用者的訪問不做任何訪問控制,但可以用 mysqladmin flush-privil......

/預設配置下的mysql在接受遠端訪問時會有一些延遲,這通常是因為主機名解析引起的。可以通過加乙個--skip-name-resolve 引數解決此問題。在windows環境下,可以在 mysql.ini 檔案裡的[mysqld]部分新增 skip-name-resolve 後重啟mysql服務。在unix環境下則需要新增 --skip-name-resolve 引數重新編譯mysql。

下面是 mysql 官方文件中關於mysql如何使用dns的說明(由fanbin翻譯):

how mysql uses dns

當乙個新的客戶端連線到mysqld時,mysqld會產生乙個新的執行緒來處理這個請求。這個執行緒首先會檢查主機名是否在快取中存在,如果不存在,它將嘗試解析這個主機名。

如果作業系統支援執行緒安全的gethostbyaddr_r() 和gethostbyname_r() 呼叫,這個執行緒會使用它們執行主機名解析。

如果作業系統不支援執行緒安全的呼叫,這個執行緒就會鎖定乙個互斥體並換為呼叫gethostbyaddr() 和gethostbyname() 。在這種情況下,第乙個執行緒解鎖互斥體之前,其他的執行緒將不能解析在快取中不存在的主機名。

你可以通過新增--skip-name-resolve引數啟動mysqld來禁用 dns 主機名查詢。但是這將導致你在mysql的授權表中只能使用ip數字。

如果你使用乙個很慢的dns和許多主機,你可以通過新增--skip-name-resolve禁用網域名稱查詢或通過增加 host_cache_size 定義的值(預設值: 128)並重新編譯mysqld來提公升效能。

你可以通過--skip-host-cache引數禁用主機名快取。要清空主機名快取,可以執行乙個 flush hosts 語句或執行mysqladmin中的flush-hosts命令實現。

要完全禁用icp/ip連線,請新增 --skip-networking 啟動mysqld。

MYSQL遠端連線速度慢的解決方法

在區域網內連線其他機器的mysql,發現速度慢的很,不知道什麼原因,總有幾秒的延遲.後來在網上發現解決方法,my.ini裡面新增 mysqld skip name resolve skip grant tables 這樣速度就快了 skip name resolve 選項就能禁用dns解析,連線速度...

MYSQL遠端連線速度慢的解決方法

mysql遠端連線速度慢的解決方法 在區域網內連線其他機器的mysql,發現速度慢的很,不知道什麼原因,總有幾秒的延遲.後來在網上發現解決方法,my.ini裡面新增 mysqld skip name resolve skip grant tables 這樣速度就快了 skip name resolv...

mysql 遠端連線速度慢的解決方案

mysqld skip name resolve skip name resolve 選項就能禁用dns解析,連線速度會快很多。不過,這樣的話就不能在mysql的授權表中使用主機名了而只能用ip格式。若使用 skip grant tables系統將對任何使用者的訪問不做任何訪問控制,但可以用 mys...