MySQL优化一(硬件和操作系统)

一直以来,都在使用MySQL这一开源数据库,也进行了深入研究,从开发角度讲,很多时候只是作为数据的持久存储,并不涉及过多的功能,而是根据不同的场景需求,来使用MySQL的各种特性,因此比较多的心得和笔记都是偏重于管理部分。

目前所做的一系列笔记基于两本书籍,一本是 MySQL性能调优与架构设计 , 另外一本是 高性能MySQL 。相信都是大家所熟悉的两本好书。因此整理了一些心得,根据几个议题,列了出来,一是作为读书笔记,另一面是在未来使用和再学习过程中进行比对,修复错误的,温习原有的,发现新的。

CPU

CPU部分讲了几点是比较清晰的:

  1. 在需要密集计算时使用高性能的CPU,而不是多个CPU
  2. 64位的架构配合64位的操作系统
  3. 事务处理比较多时,可以使用多CPU配合InnoDB

其实CPU的选择比较简单,完全是需求左右之,配合不同场景,来提升CPU计算能力和数量。

内存

内存也是比较简单的,大、快、兼容性好是硬件要求。而特别注意的是,虽说很多缓存都可以放入内存,但是,不要忘记还有可能涉及一些计算,而无法缓存所有可能的结果,因此,命中率很重要,这个牵涉到库表的设计和SQL语句等其他因素。

硬盘

SSD的硬盘目前很流行,但是较贵。还是那句话,根据需求来看,是否需要,不然的话,转速高的硬盘还是挺不错的。

操作系统

本人是开源流,Linux 发行版和 BSD之类的都行,甚至 Solaris,其实如果不是Oracle买了Solaris, 不然这个系统对于MySQL的支持应该是非常好的。

其实文件系统也很重要,牵涉到几个参数, MySQL性能调优与架构设计 这本书中有详细描述,可以参考一下。

对于不同文件系统的不同场景的性能,倒是可以请教Linux邮件组里的大牛,会有非常详尽的解释。

Raid

这个必须要做,跟SA好好商量,大概就是 Raid 5 或者 10之类的选择。

其他详细的资料在书中有详细描述,本文讲的比较简单,其实原因是不能详尽的描述在不同场景下如何使用不同硬件策略。我想引用一位SA朋友说过的一句话, “每个系统如何跑到最佳状态,只有慢慢试出来。”

意思就是在未上线之前,最多模拟和以经验判断来初步设定硬件、软件策略,具体调优要慢慢试,也就是看看需求是否有变,比如并发高、计算量大、场景多等因素,所以本文列出的都是比较泛泛的,深究的话还是需要看需求的。

总之,慢慢来,一步步踏实走。