求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
MySQL性能调优之Memory or SSD?
 

作者:yanghua_kobe,发布于2012-11-27,来源:CSDN

 

当一个传统的向外扩展的方式对于MySQL来讲变得流行,看看我们不得不扩充哪一方面(便宜的内存?快速存储?更好的电源效率?)将会变得非常有趣。这里确实有很多种选择——我每周大概会遇到一个客户使用Fushion-IO 卡。然而,我却看到了他们一个有趣的选择——他们选择购买一个SSD,当他们每秒仍然能读取很多页的时候(这时,我宁愿选择购买内存来取代),而使用存储驱动器做“写操作”使用。

在这里,我提出几个参考标准来供你确认是否是以上我说的这种情况:

  • Percona-XtraDB-9.1 release
  • Sysbench(开源性能测试工具)的OLTP有8千万行的“工作量”(大概等同于18GB的数据+索引)
  • XFS 文件系统选择nobarrier选项安装
  • 测试运行具有:
    1. 带有BBU的RAID 10硬盘超过8块(所谓BBU,社区的解释是在掉电的情况下,能够cache数据72h,当机器供电正常,再从cache中将数据写入磁盘)
    2. Inter SSD X25-E 32GB
    3. FushionIO 320GB MLC【1】
  • 对于每一次测试,在运行的时候将缓冲池设置在2G到22G之间(为了和合适的内存比较性能)
  • 硬件配置:

Dell PowerEdgeR900

4 QuadCoreIntel(R) Xeon(R) CPU E7320 @ 2.13GHz (16 cores in total)

32GB of RAM

RAID10 on 8disks 2.5” 15K RPMS

FusionIO 160GBSLC

FusionIO 320GBMLC

OS:

CentOS 5.5

XFS filesystem

开始,我们对RAID 10的存储做一个测试以建立一个基线。Y轴是每秒传输的数据(传输速率,它越大越好)。X轴是innodb_buffer_pool_size的大小。

我特地挑选了关于该测试中的三个有趣的点

  • A点,当数据完全符合缓冲池大小(最佳性能)。一旦你达到该点,简直就像内存的进一步增加,了解该信息很重要。
  • B坐标出现在当数据刚开始超过缓冲池的大小。这对于许多用户来讲是最让人头疼的一点了。因为当内存下降仅10%,而性能却比原来降低了2.6倍。在产品中,这通常应对着这样的说辞——“上个星期一切看起来都还OK,但它却正在变得越来越慢!”。我想建议你,增加内存是迄今为止最好的做法,在这种情况下。
  • C点展示数据大约是缓冲池三倍的地方。它是一个有趣的点,既然你不能够计算出内存的花费(可能不了解未来遇到瓶颈需要耗费多少购买内存的成本),这是购买一个SSD可能更为合适。

在C点,在这幅图中,一个Fusion-IO卡提升性能达5(如果你采用Interl SSD将会是2倍)。为了用增加内存的方式获得相同的性能提升,你将需要增加多于60%的内存-或者如果你想提升5倍的性能,需要增加超过260%的内存大小。想象一下这样一个生产环境:你的C点(假设像上面说的系统越来越慢)产生是在当你采用了32GB的RAM以及100GB的数据时。那么它将变得有趣了:

  • 你能简单地增加另一个32G的RAM(你的内存插槽以及被插满了吗?)
  • 你的预算允许你安装一个SSD卡吗?(你可能仍然需要不止一个,因为它们都相对较小。已经有一些市场上的家电,它们使用了8块Intel的SSD设备)。
  • 是否2倍或者5倍的性能提升能够足够满足你的需求?如果你能够买得起所有需要的内存,我想你可能会获得更好的性能。

这里的测试被设计为——尽可能多地保证“热”数据,但我猜想这里最需要吸取的教训是不要低估你的“活动集”数据的大小。比如,某些人他只是追加数据到一些排序的日志表,它可能只需要很小的百分比,但在其他情况下,它可能被认为需要占用很大的百分比(比如日志记录地相对频繁)。

重要的注意点:该图以及这些结论只是在sysbenchuniform中被验证。在你特殊的工作场合中,B点和C点可能的分布位置会有所不同。

图中的源结果数据:

引用:

【1】:目前SSD硬盘使用两种形式的NAND闪存:单级单元(SLC)和多级单元(MLC)。两者之间的差额是每单元存储的数据量,SLC每单元存储1比特而 MLC每单元存储2比特。关键在于,SLC和MLC占据了相同大小的芯片面积。因此,在同样的价格下,MLC可以有两倍容量的效果。

SLC和MLC的擦除性能是一样的,MLC闪存的读取性能需花费两倍长的时间,写入性能需花费四倍长的时间。

SLC的最大优势不在于它的性能好而在于它的使用寿命长。

ps:SLC因为速度快,使用寿命长,一般被用在企业级SSD上。而MLC则多用在消费级市场,如workstation。Fusion-io开发出一种管理MLC闪存的新技术SMLC(Single Mode Level Cell),将SLC技术的企业可靠性与消费级MLC闪存结合起来。SMLC技术的带宽与SLC接近,其耐用性和写入性能也可以与SLC媲美,且成本大大低于传统SLC解决方案。

相关文章 相关文档 相关视频



我们该如何设计数据库
数据库设计经验谈
数据库设计过程
数据库编程总结
数据库性能调优技巧
数据库性能调整
数据库性能优化讲座
数据库系统性能调优系列
高性能数据库设计与优化
高级数据库架构师
数据仓库和数据挖掘技术
Hadoop原理、部署与性能调优
 
分享到
 
 


MySQL索引背后的数据结构
MySQL性能调优与架构设计
SQL Server数据库备份与恢复
让数据库飞起来 10大DB2优化
oracle的临时表空间写满磁盘
数据库的跨平台设计
更多...   


并发、大容量、高性能数据库
高级数据库架构设计师
Hadoop原理与实践
Oracle 数据仓库
数据仓库和数据挖掘
Oracle数据库开发与管理


GE 区块链技术与实现培训
航天科工某子公司 Nodejs高级应用开发
中盛益华 卓越管理者必须具备的五项能力
某信息技术公司 Python培训
某博彩IT系统厂商 易用性测试与评估
中国邮储银行 测试成熟度模型集成(TMMI)
中物院 产品经理与产品管理
更多...