1) innodb_buffer_pool_size
mysql
若是用Innodb,那麼這是一個重要變量。相對於MyISAM來講,Innodb對於buffer size更敏感。MySIAM可能對於大數據量使用默認的key_buffer_size也還好,但Innodb在大數據量時用默認值就感受在爬了。 Innodb的緩衝池會緩存數據和索引,因此不須要給系統的緩存留空間,若是隻用Innodb,能夠把這個值設爲內存的70%-80%。和 key_buffer相同,若是數據量比較小也不怎麼增長,那麼不要把這個值設過高也能夠提升內存的使用率。sql
2) innodb_additional_pool_size數據庫
這個的效果不是很明顯,至少是當操做系統能合理分配內存時。但你可能仍須要設成20M或更多一點以看Innodb會分配多少內存作其餘用途。緩存
3) innodb_log_file_size
安全
對於寫不少尤爲是大數據量時很是重要。要注意,大的文件提供更高的性能,但數據庫恢復時會用更多的時間。我通常用64M-512M,具體取決於服務器的空間。服務器
4) innodb_log_buffer_size
性能
默認值對於多數中等寫操做和事務短的運用都是能夠的。若是常常作更新或者使用了不少blob數據,應該增大這個值。但太大了也是浪費內存,由於1秒鐘總會 flush(這個詞的中文怎麼說呢?)一次,因此不須要設到超過1秒的需求。8M-16M通常應該夠了。小的運用能夠設更小一點。大數據
5) innodb_flush_log_at_trx_commit (這個很管用)spa
抱怨Innodb比MyISAM慢 100倍?那麼你大概是忘了調整這個值。默認值1的意思是每一次事務提交或事務外的指令都須要把日誌寫入(flush)硬盤,這是很費時的。特別是使用電 池供電緩存(Battery backed up cache)時。設成2對於不少運用,特別是從MyISAM錶轉過來的是能夠的,它的意思是不寫入硬盤而是寫入系統緩存。日誌仍然會每秒flush到硬 盤,因此你通常不會丟失超過1-2秒的更新。設成0會更快一點,但安全方面比較差,即便MySQL掛了也可能會丟失事務的數據。而值2只會在整個操做系統 掛了時纔可能丟數據。操作系統
6) innodb_flush_method: 設置InnoDB同步IO的方式
1) Default – 使用fsync()。
2) O_SYNC 以sync模式打開文件,一般比較慢。
3) O_DIRECT,在Linux上使用Direct IO。能夠顯著提升速度,特別是在RAID系統上。避免額外的數據複製和double buffering(mysql buffering 和OS buffering)
7) 保持 thread_cache 在一個相對較高的數字,大約 16 – 防止打開鏈接時緩慢。
8) 分配一個極小的數量給 max_connections 參數 – 太多的鏈接會用盡RAM並鎖定MySQL服務。
9) 將 innodb_autoextend_increment 配置因爲默認8M 調整到 128M
此配置項做用主要是當tablespace 空間已經滿了後,須要MySQL系統須要自動擴展多少空間,每次tablespace 擴展都會讓各個SQL 處於等待狀態。增長自動擴展Size能夠減小tablespace自動擴展次數。
注:修改完配置以後重啓可能失敗,這時須要刪除 /var/lib/mysql/ 目錄下的兩個ib_logfile文件 命令rm -fr /var/lib/mysql/ib_logfile* 而後執行重啓命令(service mysqld restart))重啓執行mysql –uroot -p進入mysql 利用命令show variables like '%storage%';查看參數是否已被修改。