设为首页 收藏本站
查看: 555|回复: 0

[经验分享] MySQL性能调优之Memory or SSD?

[复制链接]

尚未签到

发表于 2016-10-19 07:45:37 | 显示全部楼层 |阅读模式
  当一个传统的向外扩展的方式对于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的大小。
DSC0000.png

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

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-288117-1-1.html 上篇帖子: mysql create function 通过子ID 查询 所有父ID 下篇帖子: mysql中函数IF,GROUP_CONCAT的使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表