MySQL性能调优之Memory or SSD?

当一个传统的向外扩展的方式对于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解决方案。

原文发布时间为:2012-04-21

时间: 2024-11-16 01:01:35

MySQL性能调优之Memory or SSD?的相关文章

15个你不知道的mysql性能调优参数介绍

1.DEFAULT_STORAGE_ENGINE 如果你已经在用MySQL 5.6或者5.7,并且你的数据表都是InnoDB,那么表示你已经设置好了.如果没有,确保把你的表转换为InnoDB并且设置default_storage_engine为InnoDB. 为什么?简而言之,因为InnoDB是MySQL(包括Percona Server和MariaDB)最好的存储引擎 – 它支持事务,高并发,有着非常好的性能表现(当配置正确时).这里有详细的版本介绍为什么 2.INNODB_BUFFER_PO

MySQL性能调优和使用新手必读教程

MYSQL 应该是最流行的 WEB 后端数据库.WEB 开发语言最近发展很快,PHP, Ruby, Python, Java 各有特点,虽然 NOSQL 最近越?碓蕉嗟谋惶岬剑??窍嘈糯蟛糠旨芄故?故腔嵫≡ MYSQL 来做数据存储. MYSQL 如此方便和稳定,以至于我们在开发 WEB 程序的时候很少想到它.即使想到优化也是程序级别的,比如,不要写过于消耗资源的 SQL 语句.但是除此之外,在整个系统上仍然有很多可以优化的地方. 1. 选择合适的存储引擎: INNODB 除非你的数据表使用来做

mysql监控、性能调优及三范式理解

原文:mysql监控.性能调优及三范式理解 1监控          工具:sp on mysql     sp系列可监控各种数据库   2调优 2.1 DB层操作与调优               2.1.1.开启慢查询                             在My.cnf文件中添加如下内容(如果不知道my.cnf的路径可使用find / -name my.cnf进行查找):                             在mysqld下添加            

性能调优攻略

关于性能优化这是一个比较大的话题,在<由12306.cn谈谈网站性能技术>中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法.本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充. 在开始这篇文章之前,大家可以移步去看一下以前发表的<代码优化概要>,这篇文章基本上告诉你--要进行优化,先得找到性能瓶颈!但是在讲如何定位系统性能瓶劲之前,请让我讲一下系统性能的定义和测试,因为没有这两件事,后面的定

通向架构师的道路(第三天)之apache性能调优

一.总结前一天的学习 在前两天的学习中我们知道.了解并掌握了Web Server结合App Server实现单向Https的这样的一个架构.这个架构是一个非常基础的J2ee工程上线布署时的一种架构.在前两天的教程中,还讲述了Http服务器.App Server的最基本安全配置(包括单向https的实现), 它只是避免了用户可以通过浏览器侵入我们的Web访问器或者能够通过Web浏览器来查询我们的Web目录结构及其目录内的文件与相关内容,这种入侵我们把它称为: Directory traversal

## Spark作业性能调优总结

Spark作业性能调优总结 前段时间在集群上运行Spark作业,但是发现作业运行到某个stage之后就卡住了,之后也不再有日志输出.于是开始着手对作业进行调优,下面是遇到的问题和解决过程: 运行时错误 Out Of Memory: Java heap space / GC overhead limit exceeded 使用yarn logs -applicationId=appliation_xxx_xxx 命令查看Yarn收集的各个Executor的日志. 可以发现OOM的错误,以及一些re

这是一篇最通熟易懂的性能调优总结!

精彩早知道 作者概述 什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么人来进行性能调优?(who) 怎么样进行性能调优?(How) 总结 硬件配置:CUP Xeon E5620 x 2 8核心, 内存 16G , 硬盘 RAID 10 操作系统: CentOS 6.4 x86_64(64位)  一.作者概述 在这篇博文中,我不想用一些抽象的概念去说性能调优的问题,只想用最通俗的语言尽量来准确的表达我的想法

性能调优概述,这是一篇最通俗易懂的性能调优总结

精彩早知道 作者概述 什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么人来进行性能调优?(who) 怎么样进行性能调优?(How) 总结 硬件配置:CUP Xeon E5620 x 2 8核心, 内存 16G , 硬盘 RAID 10,操作系统: CentOS 6.4 x86_64(64位). 概述 在这篇博文中,我不想用一些抽象的概念去说性能调优的问题,只想用最通俗的语言尽量来准确的表达我的想法. 由于

mysql参数调优

为何要调整参数 不同服务器之间的配置.性能不一样 不同业务场景对数据的需求不一样 Mysql的默认参数只是个参考值,并不适合所有的应用场景 优化之前我们需要知道什么 服务器相关的配置 服务器型号 操作系统版本 内核版本 磁盘存储介质(sas sata ssd) 业务相关的情况 读多写少,读少写多 业务数据增长量 mysql相关的配置 服务器上需要关注那些 硬件情况 cpu(几核.超线程) 内存 磁盘(容量.性能) 操作系统版本(是否为稳定版) CPU.网卡节电模式(建议数据库应用的服务器,关闭节