標籤:設定檔 mysql 伺服器 buffer 調優
我們在安裝完mysql之後一定要對其進行調優,如果設定檔沒有搞好的話,mysql可能會佔用很大一部
分記憶體,同時會使得伺服器的效能大大下降,那麼我們該如何進行調優,調優的常見選項與方法又是什
麼呢,我們一起來看看。
筆者在這裡參考了網上的一篇mysql5.6版本的設定檔/etc/my.cnf的模板,詳細的配置內容可以參考筆
者另一篇博文,在此不加贅述,我們一起來看看調優時注意的選項:
1) key_buffer_size 首先可以根據系統的記憶體大小設定它,大概的一個參考值:1G以下記憶體設定
128M;2G/256M; 4G/384M;8G/1024M;16G/2048M.這個值可以通過檢查狀態值Key_read_requests和
Key_reads,可以知道key_buffer_size設定是否合理。比例key_reads / key_read_requests應該儘可能
的低,至少是1:100,1:1000更好(上述狀態值可以使用SHOW STATUS LIKE ‘key_read%’獲得)。注意:
該參數值設定的過大反而會是伺服器整體效率降低!
2) table_open_cache 開啟一個表的時候,會臨時把表裡面的資料放到這部分記憶體中,一般設定成1024
就夠了,它的大小我們可以通過這樣的方法來衡量: 如果你發現 open_tables等於table_cache,並且
opened_tables在不斷增長,那麼你就需要增加table_cache的值了(上述狀態值可以使用SHOW STATUS
LIKE ‘Open%tables’獲得)。注意,不能盲目地把table_cache設定成很大的值。如果設定得太高,可
能會造成檔案描述符不足,從而造成效能不穩定或者串連失敗。
3) sort_buffer_size 查詢排序時所能使用的緩衝區大小,該參數對應的分配記憶體是每串連獨佔!如果有
100個串連,那麼實際分配的總共排序緩衝區大小為100 × 4 = 400MB。所以,對於記憶體在4GB左右的服
務器推薦設定為4-8M。
4) read_buffer_size 讀查詢操作所能使用的緩衝區大小。和sort_buffer_size一樣,該參數對應的分
配記憶體也是每串連獨享!
5) join_buffer_size 聯集查詢操作所能使用的緩衝區大小,和sort_buffer_size一樣,該參數對應的
分配記憶體也是每串連獨享!
6) myisam_sort_buffer_size 這個緩衝區主要用於修複表過程中排序索引使用的記憶體或者是建立索引時
排序索引用到的記憶體大小,一般4G記憶體給64M即可。
7) query_cache_size MySQL查詢操作緩衝區的大小,通過以下做法調整:SHOW STATUS LIKE
‘Qcache%’; 如果Qcache_lowmem_prunes該參數記錄有多少條查詢因為記憶體不足而被移除出查詢快取。
通過這個值,使用者可以適當的調整緩衝大小。如果該值非常大,則表明經常出現緩衝不夠的情況,需要
增加緩衝大小;Qcache_free_memory:查詢快取的記憶體大小,通過這個參數可以很清晰的知道當前系統的
查詢記憶體是否夠用,是多了,還是不夠用,我們可以根據實際情況做出調整。一般情況下4G記憶體設定64M
足夠了。
8) thread_cache_size 表示可以重新利用儲存在緩衝中線程的數,參考如下值:1G —> 8 2G —> 16
3G —> 32 3G —> 64
除此之外,還有幾個比較關鍵的參數:
9) thread_concurrency 這個值設定為cpu核心數的2倍即可
10) wait_timeout 表示閒置連線逾時時間,預設是28800s,這個參數是和interactive_timeout一起
使用的,也就是說要想讓wait_timeout 生效,必須同時設定interactive_timeout,建議他們兩個都設
置為10
11) max_connect_errors 是一個MySQL中與安全有關的計數器值,它負責阻止過多嘗試失敗的用戶端以
防止暴力破解密碼的情況。與效能並無太大關係。為了避免一些錯誤我們一般都設定比較大,比如說
10000
12) max_connections 最大的串連數,根據業務請求量適當調整,設定500足夠
13) max_user_connections 是指同一個帳號能夠同時串連到mysql服務的最大串連數。設定為0表示不限
制。通常我們設定為100足夠
本文出自 “奇蹟的少年” 部落格,請務必保留此出處http://raffaelexr.blog.51cto.com/8555551/1746866
mysql 參數調優