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!