关闭

关闭

关闭

封号提示

内容

首页 MongoDB性能测试报告pub.pdf

MongoDB性能测试报告pub.pdf

MongoDB性能测试报告pub.pdf

上传者: tully 2012-07-05 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《MongoDB性能测试报告pubpdf》,可适用于IT/计算机领域,主题内容包含MongoDB性能测试报告测试点测试点包括磁盘占用情况a)w数据磁盘占用情况批量导入性能a)批量导入速度mongoimportb)导入过程中对查询性符等。

MongoDB性能测试报告测试点测试点包括磁盘占用情况a)w数据磁盘占用情况批量导入性能a)批量导入速度mongoimportb)导入过程中对查询性能的影响查询性能a)kw数据集级别的keyvalue查询速度针对javadriverb)并发查询性能针对javadriver多线程查询系统稳定性a)运行稳定性b)备份方案可用性c)单个节点负载测试环境硬件环境Server*CPU:IntelXeonEGHzcoreMemory:G软件环境OS:RedHatEnterpriseLinuxASrelease(NahantUpdate)kernelFileSystem:ExtMongoDB:mongodblinuxx测试数据集生成方式采用简单的行数据每行包括longintdatestringdouble类型各一个字段由程序计数生成样本数据集。测试数据集规模每个数据集为w数据(每行个字段包括一个较长的字符串)磁盘占用G。测试结果SinglenodeJavadriver插入w数据总耗时为s平均每秒插入行Javadriver性能稍低且不是应用场景不再做复杂测试。下面着重测试mongoimport导入csv文件的情况。批量导入性能测试Case测试批量导入数据的耗时和磁盘占用情况每次导入kw数据共导入kw数据数据库Collection索引情况:单一索引和复合索引导入方式:本地导入和远程导入导入耗时情况如下表所示从中可以看出平均导入速度为w行秒。索引个数对导入性能影响不大。由于测试环境的机器都在一个网段内远程导入和本地导入差别也不是很明显。导入过程中的磁盘占用情况如下包括数据和索引。从中可以看出复合索引比单一索引多占用一定的磁盘空间空间占用不是纯粹按倍数增长这是与monogdb的数据预分配策略有关的说明:mongodb出于性能考虑采用预分配方式。每个个数据库的文件集从序号开始分配大小依次是MMMMGG然后就是一直G的创建下去(位系统最大到M因为有文件大小限制)。所以如果上一个文件是G而数据量刚好超过G则下一个文件(大小为G)则可能有超过都是空的。Case测试批量导入数据的耗时每次导入的数据量翻倍。每次导入kw数据共导入kw数据数据库Collection索引情况:单一索引和复合索引导入方式:本地导入导入耗时情况如下表所示(index)本地导入耗时(秒)(index)远程导入耗时(秒)(index)本地导入耗时(秒)(index)远程导入耗时(秒)导入耗时(秒)批量导入耗时情况kwkwkwkwkwkwkwkwkwkw(index)磁盘占用(GB)(index)磁盘占用(GB)占用空间(GB)磁盘占用情况从中可以看出平均导入速度约为w行秒。一次导入kw和导入kw对导入性能影响不大批量导入性能拐点测试Case测试批量导入性能的拐点远程导入每次导入kw每次导入kw数据共导入kw数据数据库Collection索引情况:复合索引导入方式:远程导入导入耗时情况如下从中可以看出当数据量达到KW时导入性能就开始出现明显下降Case测试批量导入性能的拐点本地导入每次导入kw每次导入kw数据共导入kw数据数据库Collection索引情况:复合索引(index)本地导入耗时(秒)(index)本地导入耗时(秒)导入耗时(秒)批量导入耗时情况导入耗时(秒)批量导入性能拐点导入方式:本地导入导入耗时情况如下从中可以看出当数据量达到KW时导入性能就开始出现明显下降。磁盘占用情况如下从中可以看出磁盘占用为线性增长KW数据共占用GB空间查询性能测试Case测试kw数据的查询耗时情况数据量kwCollection索引情况:复合索引查询策略:随机生成主键id作为一次查询共执行批查询次数从w次到w次以w次为间隔并发策略:分为单线程线程线程线程不同并发情况查询耗时如下导入耗时(秒)批量导入性能拐点kwkwkwkwkwkwkwkwkwkwkwkwkwkwkwkwkwkwkwkwkwkwkwkwkw磁盘占用(GB)批量导入磁盘占用情况不同并发下每次查询平均耗时情况如下线程数每次查询平均耗时(msquery)。。。。从中可以看出当查询线程达到到左右时系统吞吐量基本饱和。Case测试数据导入过程中的查询耗时情况数据量kw查询发生在再导入kw数据的过程中Collection索引情况:复合索引查询策略:随机生成主键id作为一次查询共执行批查询次数从w次到w次以w次为间隔并发策略:分为单线程线程线程线程不同并发情况查询耗时如下不同并发下每次查询平均耗时情况如下线程数每次查询平均耗时(msquery)wwwwwwwwwwthreadthreadthreadthread查询耗时(毫秒)kw数据查询耗时wwwwwwwwwwthreadthreadthreadthread查询耗时(毫秒)导入过程中查询耗时(基础kw)。。。。从中可以看出导入数据过程会有写锁产生对查询性能有略微影响。Case测试数据导入过程中的查询耗时情况基础数据量翻倍数据量kw查询发生在再导入kw数据的过程中Collection索引情况:复合索引查询策略:随机生成主键id作为一次查询共执行批查询次数从w次到w次以w次为间隔并发策略:分为单线程线程线程线程不同并发情况查询耗时如下不同并发下每次查询平均耗时情况如下线程数每次查询平均耗时(msquery)。。。。从中可以看出随着基础数据量上升导入过程中查询性能也会受到影响查询性能拐点测试Case测试查询性能变化的拐点数据量分别为kwkwkwkwkwkwCollection索引情况:复合索引查询策略:随机生成主键id作为一次查询对于kwkwkw共执行批查询次数从w次到w次以w次为间隔对于kw共执行批查询次数从k次到k次以k次为间隔对于kwkw共执行批查询次数从次到k次以次为间隔并发策略:分为单线程线程线程线程不同并发情况每次查询平均耗时如下其中kw的线程由于耗时较长且跟线程相近所以没有单独测试从中可以看出当数据量达到KW时。查询性能就开始出现较大幅度下降。shards服务部署情况其中Server和Server为同一网段机器部署两个分片Server还部署了mongo的configserverServer在其他网段mongos为mongodb的前端路由为方便使用部署在台机器上。批量导入性能测试Case测试批量导入数据的耗时和磁盘占用情况每次导入kw数据共导入kw数据数据库Collection索引情况:单一索引导入方式:从Server远程导入导入耗时情况如下表所示kwkwkwkwkwkwthreadthreadthreadthread每次查询平均耗时(毫秒)查询性能拐点情况Server•shard•config•mongosServer•shard•mongosServer•mongos从中可以看出平均导入速度为。W行秒跟单机导入性能保持一致。磁盘占用情况如下从中可以看出由于测试数据比较规整根据SHARDKEY能均匀分布在两个分片中。数据总量较单机情况会有所上升。应该是由于MONOGODB的预分配机制导致。批量导入性能拐点测试Case测试批量导入性能的拐点远程导入每次导入kw每次导入kw数据共导入kw数据数据库Collection索引情况:单一索引导入方式:从Server远程导入导入耗时情况如下kwkwkwkwkwkwkwkwkwkw导入耗时(秒)导入耗时(秒)批量导入耗时情况kwkwkwkwkwkwkwkwkwkwshardshard占用空间(GB)磁盘占用情况从中可以看出shards的批量导入性能相对单机有明显提升。kw数据处开始出现性能拐点但性能下降不是很快预计更大的拐点在kw数据以后。查询性能测试Case测试kw数据查询性能查询方与数据库不在相同网段使用本地mongos数据量kwCollection索引情况:单一索引查询策略:随机生成主键id作为一次查询共执行批查询次数从w次到w以w次为间隔并发策略:分为单线程线程线程线程查询方:由Server发起查询使用本地mongos不同并发情况查询耗时如下Case测试kw数据查询性能查询方与数据库不在相同网段使用远程数据库的导入耗时(秒)批量导入性能拐点测试wwwwwwwwwwthreadthreadthreadthread查询耗时(毫秒)kw数据查询耗时情况mongos数据量kwCollection索引情况:单一索引查询策略:随机生成主键id作为一次查询共执行批查询次数从w次到w次以w次为间隔。并发策略:分为单线程线程线程线程查询方:由Server发起查询使用远程mongos不同并发情况查询耗时如下Case测试kw数据查询性能查询方与数据库在相同网段使用本地mongos数据量kwCollection索引情况:单一索引查询策略:随机生成主键id作为一次查询共执行批查询次数从w次到w次以w次为步进值并发策略:分为单线程线程线程线程查询方:由Server发起查询使用本地mongos不同并发情况查询耗时如下wwwwwwwwwwthreadthreadthreadthread查询耗时(毫秒)kw数据查询耗时情况前面三个case不同并发下每次查询平均耗时情况如下线程数Case查询平均耗时(msquery)Case查询平均耗时(msquery)Case查询平均耗时(msquery)。。。。。。。。。。。。从中可以看出使用本地MONGOS和远程MONGOS性能较为接近本地MONGOS性能会略微好些使用SERVER查询速度有明显提高。主要原因一方面是SHARD所在机器另一方面是相同网段。同单机一样线程数为时系统吞吐量达到饱和。Case测试数据导入过程的查询性能数据量分别为kwkwkwCollection索引情况:单一索引查询策略:随机生成主键id作为一次查询共执行批查询次数从w次到w次以w次为间隔分别对比各级数据量和再导入kw过程的查询耗时并发策略:分为单线程线程线程线程不同并发情况每次查询平均耗时如下wwwwwwwwwwthreadthreadthreadthread查询耗时(毫秒)kw数据查询耗时情况其中kwkw表示kw基础上导入kw数据的过程的查询情况。其中kwkw的单线程情况为节约时间没有测试。从中可以看出导入过程对查询速度的有一定影响但总体影响不是很大。查询性能拐点测试Case测试查询性能变化的拐点数据量为kw到kw以kw为间隔Collection索引情况:单一索引查询策略:随机生成主键id作为一次查询对于kw到kw共执行批查询次数从w次到w次以w次为间隔对于kw共执行批查询次数从k次到k次以k次为间隔对于kwkw共执行批查询次数从次到k次以次为间隔并发策略:分为线程线程线程查询方:由Server发起查询使用本地mongos不同并发情况每次查询平均耗时如下kwkwkwkwkwlkwkwkwkwthreadthreadthreadthread每次查询平均耗时(毫秒)数据导入过程中查询情况比较从中可以看出.当数据量达到KW时。查询性能就开始出现较大幅度下降。.相比单机情况的KW拐点可以发现在数据均匀分布的情况下拐点出现的数据量可以成倍增长。相对单机本地查询的性能SHARDS远程查询性能有所下降但这应该是由于跨网段是原因导致所以基本可以认为数据量相同情况下SHARDS的查询性能跟单机情况一致。shardsreplicas服务部署情况其中ServerServer在相同网段Server和Server在相同网段批量导入性能测试Case测试批量导入性能的拐点远程导入每次导入kw每次导入kw数据共导入kw数据数据库Collection索引情况:单一索引kwkwkwkwkwkwkwkwkwkwkwthreadthreadthread每次查询平均耗时(毫秒)shards查询性能拐点测试Server•shard•config•mongosServer•replica•mongosServer•shard•mongosServer•replica•mongos导入方式:从Server远程导入导入耗时情况如下从中可以看出由于两个SHARD不在相同网段且YF网速较慢此种情况下平均导入速度为。W行秒KW数据下性能拐点不明显。查询性能测试Case测试查询性能变化的拐点数据量为kw到kw以kw为间隔Collection索引情况:单一索引查询策略:随机生成主键id作为一次查询共执行批查询次数从k次到w次以k次为间隔并发策略:分为线程线程查询方:由Server发起查询使用本地mongos不同并发情况每次查询平均耗时如下从中可以看出数据量较小情况查询性能跟同网段SHARDS情况相近导入耗时(秒)导入耗时(秒)批量导入耗时情况kwkwkwkwkwkwkwkwkwkwthread(ms)thread(ms)每次查询平均耗时(毫秒)shardsreplica查询平均耗时情况当数据量达到KW时查询性能出现明显下降不过比较同网段SHARDS的情况跨网段对查询性能影响比较大。shardsreplicas服务部署情况由于ServerServer所在网段的网络较差Server本身也有一定问题所以把分片集中部署到ServerServer上批量导入性能测试Case测试批量导入性能每次导入kw数据共导入kw数据数据库Collection索引情况:复合索引导入方式:从Server远程导入导入耗时情况如下从中可以看出总体平均导入时间。W行秒随着数据量增大导入性能逐渐下降性能拐点大约出现在KW数据量Server•shard•shard•config•mongosServer•shard•shard•mongosServer•replica•replica•mongosServer•replica•replica•mongos批量导入耗时情况导入耗时(秒)查询性能测试Case测试查询性能变化的拐点数据量为kw到kw以kw为间隔Collection索引情况:单一索引查询策略:随机生成主键id作为一次查询对于kw到kw分别执行批查询次数从k次到w次以k次为间隔对于kw以上分别执行批查询次数从次到k次以次为间隔并发策略:分为线程线程查询方:由Server发起查询使用本地mongos不同并发情况每次查询平均耗时如下从中可以看出SHARDS情况下性能拐点出现在KW数据量随着数据量增加查询耗时随着一个缓慢的曲线上升。在相同物理节点条件下增加分片对查询性能没有明显改善性能拐点也跟SHARDS一致。总结根据测试结果下面简单总结一下MongoDB在千万级数据量的批量导入性能和查询性能跟mysql相比有较大的优势。MongoDB的分片机制可以在大数据量情况大幅度提升批量导入性能和查询性能MongDB的性能具有可扩展性。MongoDB在正确配置情况下稳定性良好在有备份机制的情况下具备自动恢复的能力。分片机制能动态的根据网络情况调整分片的分布情况分片在运行过程也是可以动态增加的。MongoDB在数据导入过程中索引会自动建立有部分写锁但对查询性能影响不是很大不会造成停止响应。kwkwkwkwkwkwkwkwkwkwkwkwkwkwkwkwshards查询平均耗时情况thread(ms)thread(ms)

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +2积分

资料评价:

/17
2下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部