文章來源:
http://blog.163.com/wangsen_315/blog/static/946141420089792222353/
(1)、back_log:
phpma.com
要求 MySQL 能有的鏈接數量。當主要MySQL線程在一個很短期內獲得很是多的鏈接請求,這就起做用,而後主線程花些時間(儘管很短)檢查鏈接而且啓動一個新線程。
back_log 值指出在MySQL暫時中止回答新請求以前的短期內多少個請求能夠被存在堆棧中。只有若是指望在一個短期內有不少鏈接,你須要增長它,換句話說,這值對到來的TCP/IP鏈接的偵聽隊列的大小。你的操做系統在這個隊列大小上有它本身的限制。試圖設定back_log高於你的操做系統的限制將是無效的。
當你觀察你的主機進程列表,發現大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待鏈接進程時,就要加大 back_log 的值了。默認數值是50,我把它改成500。
(2)、interactive_timeout:
phpma.com
服務器在關閉它前在一個交互鏈接上等待行動的秒數。一個交互的客戶被定義爲對 mysql_real_connect()使用 CLIENT_INTERACTIVE 選項的客戶。 默認數值是28800,我把它改成7200。
(3)、key_buffer_size:
phpma.com
索引塊是緩衝的而且被全部的線程共享。key_buffer_size是用於索引塊的緩衝區大小,增長它可獲得更好處理的索引(對全部讀和多重寫),到你能負擔得起那樣多。若是你使它太大,系統將開始換頁而且真的變慢了。默認數值是8388600(8M),個人MySQL主機有2GB內存,因此我把它改成 402649088(400MB)。
(4)、max_connections:
phpma.com
容許的同時客戶的數量。增長該值增長 mysqld 要求的文件描述符的數量。這個數字應該增長,不然,你將常常看到 Too many connections 錯誤。 默認數值是100,我把它改成1024 。
phpma.com
(5)、record_buffer:
每一個進行一個順序掃描的線程爲其掃描的每張表分配這個大小的一個緩衝區。若是你作不少順序掃描,你可能想要增長該值。默認數值是131072(128K),我把它改成16773120 (16M)
(6)、sort_buffer:
phpma.com
每一個須要進行排序的線程分配該大小的一個緩衝區。增長這值加速ORDER BY或GROUP BY操做。默認數值是2097144(2M),我把它改成 16777208 (16M)。
(7)、table_cache:
phpma.com
爲全部線程打開表的數量。增長該值能增長mysqld要求的文件描述符的數量。MySQL對每一個惟一打開的表須要2個文件描述符。默認數值是64,我把它改成512。
(8)、thread_cache_size:
phpma.com
能夠複用的保存在中的線程的數量。若是有,新的線程從緩存中取得,當斷開鏈接的時候若是有空間,客戶的線置在緩存中。若是有不少新的線程,爲了提升性能能夠這個變量值。經過比較 Connections 和 Threads_created 狀態的變量,能夠看到這個變量的做用。我把它設置爲 80。
(9)mysql的搜索功能
phpma.com
用mysql進行搜索,目的是能不分大小寫,又能用中文進行搜索
只需起動mysqld時指定 --default-character-set=gb2312
(10)、wait_timeout:
phpma.com
服務器在關閉它以前在一個鏈接上等待行動的秒數。 默認數值是28800,我把它改成7200。
注:參數的調整能夠經過修改 /etc/my.cnf 文件並重啓 MySQL 實現。這是一個比較謹慎的工做,上面的結果也僅僅是個人一些見解,你能夠根據你本身主機的硬件狀況(特別是內存大小)進一步修改。
innodb_buffer_pool_size--------這個根據數據量來設定
如 果用Innodb,那麼這是一個重要變量。相對於MyISAM來講,Innodb對於buffer size更敏感。MySIAM可能對於大數據量使用默認的key_buffer_size也還好,但Innodb在大數據量時用默認值就感受在爬了。 Innodb的緩衝池會緩存數據和索引,因此不須要給系統的緩存留空間,若是隻用Innodb,能夠把這個值設爲內存的70%-80%。和 key_buffer相同,若是數據量比較小也不怎麼增長,那麼不要把這個值設過高也能夠提升內存的使用率。
innodb_additional_pool_size
這個的效果不是很明顯,至少是當操做系統能合理分配內存時。但你可能仍須要設成20M或更多一點以看Innodb會分配多少內存作其餘用途。
innodb_log_file_size
對於寫不少尤爲是大數據量時很是重要。要注意,大的文件提供更高的性能,但數據庫恢復時會用更多的時間。我通常用64M-512M,具體取決於服務器的空間。
innodb_log_buffer_size
默認值對於多數中等寫操做和事務短的運用都是能夠的。如 果常常作更新或者使用了不少blob數據,應該增大這個值。但太大了也是浪費內存,由於1秒鐘總會 flush(這個詞的中文怎麼說呢?)一次,因此不須要設到超過1秒的需求。8M-16M通常應該夠了。小的運用能夠設更小一點。
innodb_flush_log_at_trx_commit (這個很管用) 抱怨Innodb比MyISAM慢 100倍?那麼你大概是忘了調整這個值。默認值1的意思是每一次事務提交或事務外的指令都須要把日誌寫入(flush)硬盤,這是很費時的。特別是使用電 池供電緩存(Battery backed up cache)時。設成2對於不少運用,特別是從MyISAM錶轉過來的是能夠的,它的意思是不寫入硬盤而是寫入系統緩存。日誌仍然會每秒flush到硬 盤,因此你通常不會丟失超過1-2秒的更新。設成0會更快一點,但安全方面比較差,即便MySQL掛了也可能會丟失事務的數據。而值2只會在整個操做系統 掛了時纔可能丟數據