MySQL局域網內訪問慢的原因及解決方法MySQL局域網內訪問慢的原因及解決方法。
出現原因:主要是因為DNS服務器變更地址引起的。默認安裝的MYSQL開啟了DNS的反向解析,
Windows系統下解決方法
1. 進入WIN2003/XP系統Windows目錄
2. 找出my.ini文件。
3. 修改文件內容,在[mysqld]下加入如下內容
skip-name-resolve
skip-grant-tables
4. 保存文件,重起服務。
my.ini文件解析:
[mysqld]
basedir=d:/mysql //mysql安裝目錄
datadir=d:/mysql/data //mysql數據庫目錄
port=3306 //mysql使用端口
skip-name-resolve //選項就能禁用DNS解析。這樣的話就不能在MySQL的授權表中使用主機名了而只能用ip格式。
skip-grant-tables //啟動mysql時不啟動grant-tables
[WinMySQLAdmin]
Server=D:/mysql/bin/mysqld-nt.exe //啟動mysql執行文件目錄。
user=root //登錄用戶
password= //登錄密碼
Linux系統下解決辦法:
如果在配制文件裡面 :打開/etc/my.cnf文件,修改以下設置,如果沒有,可手動添加。調整設置時,請量力而行,這與你的服務器的配置有關,特別是內存大小。以下設置比較適合於1G內存的服務器,但並不絕對。
在 [MySQLD] 下面添加 skip-name-resolve 然後保存重起,就可以了!
#指定索引緩沖區的大小,它決定索引處理的速度,尤其是索引讀的速度。通過檢查狀態值Key_read_requests和Key_reads,可以知道key_buffer_size設置是否合理。比例key_reads/key_read_requests應該盡可能的低,至少是1:100,1:1000更好(上述狀態值可以使用show statuslike'key_reads'獲得)。key_buffer_size只對MyISAM表起作用。即使你不使用MyISAM表,但是內部的臨時磁盤表是MyISAM表,也要使用該值。可以使用檢查狀態值created_tmp_disk_tables得知詳情。
key_buffer = 384M
#要求MySQL能有的連接數量。當主要MySQL線程在一個很短時間內得到非常多的連接請求,這就起作用,然後主線程花些時間(盡管很短)檢查連接並且啟動一個新線程。back_log值指出在MySQL暫時停止回答新請求之前的短時間內多少個請求可以被存在堆棧中。只有如果期望在一個短時間內有很多連接,你需要增加它,換句話說,這值對到來的TCP/IP連接的偵聽隊列的大小。你的操作系統在這個隊列大小上有它自己的限制。試圖設定back_log高於你的操作系統的限制將是無效的。默認數值是50
back_log = 200
#一個包的最大尺寸。消息緩沖區被初始化為net_buffer_length字節,但是可在需要時增加到max_allowed_packet個字節。缺省地,該值太小必能捕捉大的(可能錯誤)包。如果你正在使用大的BLOB列,你必須增加該值。它應該象你想要使用的最大BLOB的那麼大。
max_allowed_packet = 4M
#允許的同時客戶的數量。增加該值增加 mysqld要求的文件描述符的數量。這個數字應該增加,否則,你將經常看到 鏈接過多,請聯系空間商 錯誤。 默認數值是100
max_connections = 1024
#指定表高速緩存的大小。每當MySQL訪問一個表時,如果在表緩沖區中還有空間,該表就被打開並放入其中,這樣可以更快地訪問表內容。通過檢查峰值時間的狀態值Open_tables和Opened_tables,可以決定是否需要增加table_cache的值。如果你發現open_tables等於table_cache,並且opened_tables在不斷增長,那麼你就需要增加table_cache的值了(上述狀態值可以使用show status like'Open_tables'獲得)。注意,不能盲目地把table_cache設置成很大的值。如果設置得太高,可能會造成文件描述符不足,從而造成性能不穩定或者連接失敗。
table_cache = 512