Mysql的高負載速度慢一直是運維人員很頭疼的問題,若是你的mysql性能上有問題,或許這篇文章會對你有所幫助。
1、硬件優化
1.服務器的硬件選擇:
CPU:對於mysql來講,多CPU的並行查詢支持的並很差,由於單個查詢只會用到1個CPU。所以,用更快的CPU,每每比更多的CPU性能來的要好一點。更多的CPU Cache也會對查詢有所幫助。多CPU能用到的就是在線事物處理,但每每這件事,也須要更快的CPU來處理。
內存:更大更快速的內存,一般比小內存的幫助更大。並且,若是用到Heap或者Memory引擎的話,內存會消耗更多。
硬盤:高轉速的比低轉速的要好,2.5寸盤比3.5寸盤更好,磁頭擺動範圍要小於3.5寸盤,硬盤的cache也是須要考量的問題之一。SSD要遠遠優於普通金屬盤,但價格昂貴,屬於終極解決方案。而且,使用順序IO,不要用隨機IO。
Raid:
raid0雖然快,可是基於數據安全考量,不能做爲推薦配置。
raid1比較安全,讀取速度也要稍高於raid0,但寫入速度較慢。高寫入的負載不推薦。特別是做爲主寫入的master來講。
raid5對於安全性和速度是一個比較平衡的點,但若是你的數據量很大,不推薦用5,raid5對10塊盤以上的硬件支持不是很好。
raid10是不錯的選擇,速度和安全都有保障,只是一塊硬盤若是發生損壞,雖然不會形成數據丟失,但會嚴重影響性能。
raid50是比較好的選擇,適合於極大量的數據,而且保持了不錯的數據安全和性能穩定。
2、軟件優化
1.系統優化,這個須要跟你本身的操做系統來作,windows有windows的優化方法,Unix有Unix的優化方法,不反對windows+mysql的系統環境,但更推薦Unix+mysql。這基於諸如安全性,穩定性等等方面的考慮。操做系統優先考慮穩定性,而不是花哨。
2.按照服務器的性能,對操做系統的網絡鏈接數,內存分配等等參數進行優化。
3.對於大規模的數據庫,建議採用InnoDB方式,而不是MyISAM做爲數據庫引擎。MyISAM在大數據量的狀況下,性能降低嚴重,而InnoDB還能撐一陣子。mysql的源碼包裏一般都有一個support-files文件夾,裏面有針對不一樣硬件參數的ini文件。能夠cp出來使用。cp一個4GInnoDB的ini文件,再進行修改,好過去修改small或standard的ini文件。
4.文件系統的選擇,我的認爲最好的選擇是ZFS/ext4,其次是ext3/ufs2/ReiserFS,沒有太多人會爲數據庫選擇ext2吧。
3、終極優化
爲你的特性修改Mysql源代碼。
Enjoy yourself!