Mysql性能优化几步走

Mysql的高负载速度慢一直是运维人员很头疼的问题,如果你的mysql性能上有问题,或许这篇文章会对你有所帮助。

一、硬件优化

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是比较好的选择,适合于极大量的数据,并且保持了不错的数据安全和性能稳定。


二、软件优化

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吧。

三、终极优化

为你的特性修改Mysql源代码。

Enjoy yourself!

你可能感兴趣的:(mysql,服务器,文章,硬件,在线)