一.引言
經過優化MySQL的參數能夠提升資源利用率,從而達到提升MySQL服務器性能的目的。MySQL服務的配置參數都在my.cnf或者my.ini的文件中。sql
二.參數配置
2.1 key_buffer_size
key_buffer_size:表示索引緩衝區的大小。索引緩衝區全部的線程共享,增長索引緩衝區能夠獲得更好的處理索引(對全部讀和多重寫)。固然,這個值也不是越大越好,它的大小取決於內存的大小,若是這個值太大,致使操做系統頻繁換頁,也會下降系統性能。數據庫
2.2 table_cache
table_cahce:表示同時打開表的個數,這個值越大,可以同時打開的表的個數越多。這個值不是越大越好,由於同時打開的表太多致使影響操做系統的性能。緩存
2.3 query_cache_size
query_cache_size:表示查詢緩衝區的大小,該參數須要和query_cache_type進行配合使用。安全
query_cache_type:0,全部的查詢都不使用查詢緩衝區,可是query_cache_type爲0,並不會致使MYSQL釋放query_cache_size所配置的緩衝區內存。服務器
query_cache_type:1,全部的查詢都將使用查詢緩衝區,除非在查詢語句中指定SQL_NO_CACHE,如:select sql_no_cahce * from table1。性能
query_cache_type:2,只有在查詢語句中使用SQL_CACHE關鍵字,查詢纔會使用查詢緩衝區。優化
使用查詢緩衝區能夠提升查詢的速度,這種方式只適用於修改操做少且常常執行相同的查詢操做的時候。spa
2.4 sort_buffer_size
sort_buffer_size:表示排序緩存區的大小,這個值越大,進行排序的速度越快。操作系統
2.5 read_buffer_size
read_buffer_size:表示每一個線程連續掃描時爲每一個表分配的緩衝區大小(byte)。當線程從表中連續讀取記錄時須要用到這個緩衝區。線程
2.6 read_rnd_buffer_size
read_rnd_buffer_size:表示爲每一個線程保留的緩衝區的大小,與read_buffer_size類似,但主要用於存儲按特定順序讀取出來的記錄。若是須要頻繁進行屢次連續掃描,能夠增長該值。
2.7 innoDB_buffer_pool_size
innoDB_buffer_pool_size:表示innodb類型表和索引的最大緩存,這個值越大,查詢的速度越快,可是這個值太大會影響操做系統的性能。
2.8 max_connections
max_connections:表示數據庫的最大鏈接數,這個鏈接數不是越大越好,由於這些鏈接會浪費內存的資源。過多的鏈接會致使MYSQL服務器僵死。
2.9 innoDB_flush_log_at_trx_commit
innoDB_flush_log_at_trx_commit:表示什麼時候將緩衝區的數據寫入日誌文件,而且將日誌文件寫入磁盤中。該參數對於innoDB引擎很是重要。該參數有三種不一樣的值。
0:表示每隔1秒將數據寫入日誌,並將日誌文件寫入磁盤。
1:表示每次提交事務的時候將數據寫入日誌,並將日誌文件寫入磁盤。
2:表示每次提交事務的時候將數據寫入日誌,每隔1秒將日誌文件寫入磁盤。
該參數默認爲1,默認爲1時,安全性最高,可是每次提交事務或事務外的指令都須要把日誌寫入磁盤,比較費時間。參數爲0的話,安全性不是很好。爲2時,日誌仍會每秒寫入到磁盤,全部即便出現故障,通常也不會丟失超過1~2秒的更新。
2.10 back_log
back_log:表示在MYSQL暫時中止回答新請求以前的短期內,多少個請求能夠被存在堆棧中,換句話說,該值表示對到來的TCP/IP鏈接的偵聽隊列的大小。只有指望在一個短期內有不少的鏈接,才須要增長該參數的值。操做系統在這個隊列的大小也有限制,設定back_log高於操做系統的限制將是無效的。
2.11 interactive_timeout
interactive_timeout:表示服務器在關閉鏈接前等待行動的秒數。
2.12 sort_buffer_size
sort_buffer_size:表示每一個須要進行排序的線程分配的緩衝區的大小。增長這個參數的值能夠提升order by 或group by 操做的速度。
2.13 thread_cache_size
thread_cache_size:表示能夠複用的線程的數量,若是有不少的新的線程,爲了提升性能能夠增大該值。
2.14 wait_timeout
wait_timeout:表示服務器在關閉一個鏈接時,等待行動的秒數。