MySQL區域網內訪問慢的原因及解決方法

2021-08-05 20:58:53 字數 2743 閱讀 4077

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

linux系統下解決辦法:

如果在配製檔案裡面 :開啟/etc/my.cnf檔案,修改以下設定,如果沒有,可手動新增。調整設定時,請量力而行,這與你的伺服器的配置有關,特別是記憶體大小。以下設定比較適合於記憶體的伺服器,但並不絕對。

在 [mysqld] 下面新增 skip-name-resolve 然後儲存重起,就可以了!

#指定索引緩 沖區的大小,它決定索引處理的速度,尤其是索引讀的速度。通過檢查狀態值key_read_requests和key_reads,可以知道 key_buffer_size設定是否合理。比例key_reads /key_read_requests應該盡可能的低,至少是1:100,1:1000更好(上述狀態值可以使用show status like'key_reads'獲得)。key_buffer_size只對myisam表起作用。即使你不使用myisam表,但是內部的臨時磁碟表是 myisam表,也要使用該值。可以使用檢查狀態值created_tmp_disk_tables得知詳情。 

key_buffer =

#要求mysql能有的連線數量。當主要mysql執行緒在乙個很短時間內得到非常多的連線請求,這就起作用,然後主線程花些時間(儘管很短)檢查連線並且啟動乙個新執行緒。 back_log值指出在mysql暫時停止回答新請求之前的短時間內多少個請求可以被存在堆疊中。只有如果期望在乙個短時間內有很多連線,你需要增加 它,換句話說,這值對到來的tcp/ip連線的偵聽佇列的大小。你的作業系統在這個佇列大小上有它自己的限制。試圖設定back_log高於你的作業系統 的限制將是無效的。預設數值是50

back_log = 200 

(back_log值指出在mysql暫時停止回答新請求之前的短時間內多少個請求可以被存在堆疊中)

#乙個包的最大尺寸。訊息緩衝區被初始化為 net_buffer_length位元組,但是可在需要時增加到max_allowed_packet個位元組。預設地,該值太小必能捕捉大的(可能錯誤) 包。如果你正在使用大的blob列,你必須增加該值。它應該象你想要使用的最大blob的那麼大。

max_allowed_packet = 

(乙個包的最大尺寸)

#指定表快取記憶體的大小。每當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

#每個執行緒排序所需的緩衝

sort_buffer_size =

#當乙個查詢不斷地掃瞄某乙個表,mysql會為它分配一段記憶體緩衝區。read_buffer_size變數控制這一緩衝區的大小。如果你認為連續掃瞄進行得太慢,可以通過增加該變數值以及記憶體緩衝區大小提高其效能。

read_buffer_size =

#加速排序操作後的讀資料,提高讀分類行的速度。如果正對遠遠大於可用記憶體的表執行group by或order by操作,應增加read_rnd_buffer_size的值以加速排序操作後面的行讀取。仍然不明白這個選項的用處……

read_rnd_buffer_size =

#可以復用的儲存在中的執行緒的數量。如果有,新的執行緒從快取中取 得,當斷開連線的時候如果有空間,客戶的線置在快取中。如果有很多新的執行緒,為了提高效能可以這個變數值。通過比較 connections 和 threads_created狀態的變數,可以看到這個變數的作用。

thread_cache_size = 128

#查詢結果快取。第一次執行某條select語句的時候,伺服器記住該查詢的文字內容和它返回的結果。伺服器下一次碰到這個語句的時候,它不會再次執行該語句。作為代替,它直接從查詢快取中的得到結果並把結果返回給客戶端。

query_cache_size =

#最大併發執行緒數,cpu數量*2

thread_concurrency = 2

#設定超時時間,能避免長連線

wait_timeout = 120

#關閉不需要的表型別,如果你需要,就不要加上這個

skip-innodb

skip-bdb

原文:

MySQL區域網內訪問慢的原因及解決方法

mysql區域網內訪問慢的原因及解決方法mysql區域網內訪問慢的原因及解決方法。windows系統下解決方法 1.進入win2003 xp系統windows目錄 2.找出my.ini檔案。3.修改檔案內容,在 mysqld 下加入如下內容 skip name resolve skip grant ...

mysql 設定區域網內可訪問

今天同事要連我電腦的資料庫 我以為只要127.0.0.1 可以訪問就是 執行通過ip訪問的。然而並不是。這裡記錄下方法 1.開啟命令列 進入你電腦的 mysql的bin 目錄下 mysql u root p 輸入密碼 2.開啟 mysql 資料庫 use mysql 檢索 user 和 host 字...

區域網內mysql連線慢的解決辦法

通過內網連另外一台機器的mysql服務,確發現速度n慢!等了大約幾十秒才等到提示輸入密碼。但是ping mysql所在伺服器卻很快!想到很久之前有過類似的經驗,telnet等一些服務在連線請求的時候,會做一些反向網域名稱解析 如果反向解析不順暢,估計就會延遲很多,給人的感覺是連線速度n慢!在網上搜尋...