1) innodb_buffer_pool_size
如果用Innodb,那么這是一個重要變量。相對於MyISAM來說,Innodb對於buffer size更敏感。MySIAM可能對於大數據量使用默認的key_buffer_size也還好,但Innodb在大數據量時用默認值就感覺在爬了。 Innodb的緩沖池會緩存數據和索引,所以不需要給系統的緩存留空間,如果只用Innodb,可以把這個值設為內存的70%-80%。和 key_buffer相同,如果數據量比較小也不怎么增加,那么不要把這個值設太高也可以提高內存的使用率。
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 (這個很管用)
抱怨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%';查看參數是否已被修改。