MySQL扩展:购买SSD还是加内存?

日期: 2011-01-12 作者:Vadim翻译:forchenyun 来源:TechTarget中国 英文

  尽管scale-out(向外扩展)是当前非常流行的MySQL扩展方式,有趣的是在以下的条件下,scale up(向上扩展)也是不错的选择-廉价的内存,快速的存储设备,更高的用电效率。我现在每周都能遇到一个使用Fusion-IO设备的客户。我曾经见过的最有趣的选择是,在系统仍有很多可用的read资源的时候去购买一块SSD——-如果是我的话,我宁愿去购买内存,而将存储设备提供给写操作。

  以下是我的benchmark:

  Percona-XtraDB-9.1 release

  Sysbench OLTP workload with 80 million rows (about 18GB worth of data+indexes)

  XFS Filesystem mounted with nobarrier option.

  Tests run with:

  RAID10 with BBU over 8 disks

  Intel SSD X25-E 32GB

  FusionIO 320GB MLC

  对每一个测试用例,分别使用从2G 到 22G的buffer pool (以此模拟数据大小跟内存可用大小之间的差异).

  硬件是 Dell 900.

  首先,我们使用在RAID10上做的测作为一个基准. Y轴上transactions/second (越多越好), X轴上innodb_buffer_pool_size的大小:

  

  让我指出这个图有趣的几个特点:

  A箭头所指的地方就是内存可以装下全部数据的时候,这个时候性能最好。很重要的事,一旦你达到这个点,你完全不需要增加内存。

  B箭头所指的地方就是数据大小刚刚超过buffer pool的时候.这对大部分用户来说是最痛苦的-因为此时内存下降哪怕10%(即数据大小超过内存10%)性能将下降2.6倍。在线上应用中,最符合这一点的就是”上周一切都运行良好,但现在越来越慢”.这种情况我觉得增加内存是目前最好的办法。

  C箭头所指的地方就是数据大概是buffer pool的3倍,这时你增加内存可能不是一个好办法,可能SSD才更加适合,请看下图:

  

  在上面所说到的C箭头所指的地方(即数据是内存的三倍大), 在这个图中Fusion-IO提高了大概5倍的性能 ( Intel SSD提高了2倍). 如果使用内存来提高性能,你需要增加60%的内存来达到2倍当前性能的提升,或者增加260%的内存来达到5倍当前性能的提升,设想一下当你达到C箭头这个地方,你的内存是32G而数据是100G,那么现在就很有趣了:

  你能再往机器上添加一个32G的内存吗(内存槽够用不?)

  你的预算允许装载SSD吗?(因为你很可能会需要不止一块SSD,很多人都使用了8块SSD).

  2倍或者5倍的性能提升有用么?.

  这里我们保持尽可能多热数据,但是可能我们这里讨论的更多的是不要低估了你的活跃数据量,因为很可能它比你的预期要多很多。

  注意:这里的测试仅仅表现了趋势,具体的各个点的细节会和你的机器有关.

  下面是我的测试结果:

Buffer pool, GBFusionIOIntel SSDRAID 10
2450.3186.3380.67
4538.19230.3599.73
6608.15268.18121.71
8679.44324.03201.74
10769.44407.56252.84
12855.89511.49324.38
14976.74664.38429.15
161127.23836.17579.29
181471.981236.9934.78
202536.162485.632486.88
222433.132492.062448.88

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

Vadim
Vadim

相关推荐