首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NoSQL数据库崛起,从测试看NVMe SSD的优势

近年来,经典的关系型数据库仍然占着霸主地位,Memblaze很多研究是针对MySQL等关系型数据库进行的,比如《混合介质的多命名空间管理优化MySQL数据库性能》中提到的混合介质的多命名空间管理,就是一项无需MySQL改动配置便可以在开启Doublewrite的同时降低NVMe SSD写放大,提高性能和寿命的技术。关系型数据库盛行,但是数据库市场也并非一成不变,随着NoSQL,特别是以TiDB为代表的NewSQL数据库的实际应用越来越多。

诞生于Big Data时代的RocksDB

互联网是NoSQL应用最多的行业,Facebook、谷歌以及国内的阿里、网易都走在NoSQL研究和应用的前列,而在NoSQL发展之路上,NVMe SSD必不会缺席。以RocksDB为代表的高性能K/V数据库引擎就擅长于挖掘闪存的读写潜力。另一方面,诞生于Big Data时代的RocksDB,也是为远大于内存容量的海量on-disk数据而优化的,这样的设计使其适合考察存储介质的性能。

关于RocksDB

RocksDB是Facebook公司在2013年基于LevelDB的K/V引擎数据库引擎,受Apache Cassandra 和Apache HBase的启发,以开源的形式发布的。RocksDB着重强调了面向高性能存储介质、multi-core CPU的设计理念;带来了诸如多线程Compaction;低mutex锁以及Column Family等诸多LevelDB中没有的特性。

这篇文章我们就通过几个RocksDB测试来一窥NVMe SSD在NoSQL场景中的性能表现,并对其中涉及到的多队列调用等技术做一个解读。

测试环境

CPU:AMD 1stGen Zen (aka Naples)

EPYC 7351P 16-Core Processor 2.4GHz with HT

内存:128 GB DDR4-2666 DRAM

数据库:RocksDB 5.8.8

操作系统:CentOS 7.4(gcc 4.8.5 )

对比测试中采用的SSD

Plaze5 700 series 4TB (U.2形态)

某主流品牌800GB SATA SSD (6Gb/s)

测试第一阶段使用随机写方式对数据库写入500GB数据并获取存储设备性能数据,第二阶段则是8:2的混合随机读写测试。结果展示包括RocksDB自带的db_bench采集的数据库吞吐数据以及iostat的硬盘性能数据。此外,这次测试也采用了RocksDB默认的Leveled Compaction Strategy (LCS) 策略;并关闭了压缩功能。

第一阶段:数据库_随机写(无压缩)

第一阶段测试中,使用随机写的方式对RocksDB写入500 GB数据,总计 5.12亿 K/V item;我们首先使用了 thread=16的并发压力;并开启了Compaction。

测试结果如下:

SATA: 360.2 MB/s (如下图所示,从 %iowait, avgqu-sz,w_await 都看到了SATA SSD已经饱和的迹象)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190815A0OELB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券