【编者的话】闪存在这几年越来越受到大家重视,今天主要介绍一些闪存的应用案例和测试方法。本次分享作者是熊猫tv DBA杨尚刚,2011年加入新浪,负责新浪微博核心数据库架构设计,负责新浪数据库平台底层软硬件平台优化,现在在熊猫TV,负责后端数据库平台建设。
- 数据库
- NoSQL
- 分布式存储
- CDN
综合上面几种场景看,闪存主要适合有比较高的随机IO需求和带宽需求的场景。场景选择上,也是要发挥闪存的长处。目前上面业务中 未来几年发展比较快的会是在公有云存储这一部分。下图就是某厂商云盘对比,可以看到闪存的价格已经很接近机械硬盘了,而单从每IOPS成本看,性价比会更高。
固态硬盘,不过可以从广义理解,从2010年开始在互联网行业大规模应用,性能和稳定性已经得到大规模集群线上验证,应用场景已经非常广泛。当然闪存的IOPS比传统机械硬盘高几个数量级,但是更核心的还是在延迟降低上,优势更大。
上图就很好的说明了,闪存在访问延迟上的提升。
提到闪存,不得不提到闪存里非常基础的组件 NAND。NAND分类现在也是非常多。
我们为什么要做测试呢?
所以说面对如此多的厂商和产品,如何做到更高效的测试 是一个很重要的问题。虽然现在大家都开始转向云服务,直接接触硬件产品并不多,但是云厂商的测试依然是很重要的一部分。
测试很Low吗?
上图是我们需要了解的存储技术栈。
测试准则:
测试过程:
测试工具:
sysbench:
测试痛点:
解决痛点首先就是规范化:
自动化测试流程:
自动化的好处也是显而易见的:
测试闪存需要注意的几点:
我们需要的性能是steady state
MySQL测试的一些问题:
测试数据集大小,至少要过亿
系统层面的一些注意点:
InnoDB压缩测试:
基于我们之前的测试过程,我们可以得到结论,InnoDB压缩比在50%左右,对写入性能损失比较大, 损失比例在70%左右。根据这个结论,我们就可以针对我们线上业务选择是否需要使用InnoDB压缩。
TokuDB:
这是我们测试结果,可以看到TokuDB更好的压缩比和更好的写入稳定性,当然代价就是更高的CPU消耗。
以此图结尾,不要只活在当下,要勇敢的接受新技术,勇于试错,当然试错成本和收益也要评估和可控的。其实很多技术理解透彻了,可能并没有别人说的“邪恶”。