MongoDB 性能测试

1.环境

OS: CentOS 6.5 x64

MongoDB:3.2.7

Java:1.6

MongoDB的单实例安装坷以参考:http://write.blog.csdn.net/postedit/51817008

MongoDB的集群安装可以参考:http://blog.csdn.net/john_chang11/article/details/51733670

2.单mongod实例 单java进程 insert

打开日志(journal)时:

10w行数据,用时6.121 秒

50w行数据,用时22.699 秒

100w行数据,用时43.591 秒

200w行数据,用时79.676 秒

400w行数据,用时157.895 秒

800w行数据,用时324.934 秒

平均每行0.045ms 或22222.22行/s

关闭日志(journal)时:

10w行数据,用时5.183 秒

50w行数据,用时19.523 秒

100w行数据,用时36.143 秒

200w行数据,用时70.881 秒

400w行数据,用时138.648 秒

800w行数据,用时270.218 秒

平均每行0.038ms 或26315.79行/s,比开启日志(journal)模式快15.56%


当把数据文件放到tmpfs文件系统(就是内存)上时(关闭日志):

10w行数据,用时4.826 秒

50w行数据,用时19.596 秒

100w行数据,用时36.884 秒

200w行数据,用时69.176 秒

400w行数据,用时136.198 秒

800w行数据,用时268.628 秒

平均每行0.038ms 或26315.79行/s,与数据文件在磁盘上速度一样。看来单线程下内存存储没有发挥优势。


2.单mongod实例 多java进程 insert

单机上跑10个线程(关闭日志):(用java批量值200测试)

10w行数据,用时1.667 秒

50w行数据,用时3.841 秒

100w行数据,用时6.396 秒

200w行数据,用时11.702 秒

400w行数据,用时21.784 秒

800w行数据,用时41.615 秒

1600w行数据,用时84.612 秒

3200w行数据,用时166.268 秒

6400w行数据,用时333.098 秒

平均每行0.007ms或142857.14行/s


单机上跑20个线程(关闭日志):(用java批量值200测试)

10w行数据,用时2.343 秒

50w行数据,用时3.966 秒

100w行数据,用时6.036 秒

200w行数据,用时10.804 秒

400w行数据,用时18.364 秒

800w行数据,用时40.385 秒

1600w行数据,用时72.219 秒

3200w行数据,用时153.434 秒

6400w行数据,用时297.13 秒

12800w行数据,用时538.836 秒

平均每行0.0066ms或151515.15行/s


单机上跑16个线程(关闭日志):(用java最优批量值200测试)

10w行数据,用时2.584 秒

50w行数据,用时3.598 秒

100w行数据,用时5.9 秒

200w行数据,用时9.785 秒

400w行数据,用时17.713 秒

800w行数据,用时38.398 秒

1600w行数据,用时57.869 秒

3200w行数据,用时113.52 秒

6400w行数据,用时224.156

12800w行数据,用时480.413 秒

平均每行0.0062ms或161290.32行/s


单机上跑15个线程(关闭日志):(用java最优批量值200测试)

10w行数据,用时1.942 秒

50w行数据,用时3.335 秒

100w行数据,用时5.568 秒

200w行数据,用时9.415 秒

400w行数据,用时15.322 秒

800w行数据,用时31.405 秒

1600w行数据,用时57.78 秒

3200w行数据,用时120.041 秒

6400w行数据,用时219.849秒

12800w行数据,用时446.412 秒

平均每行0.00585ms或 170940.17 行/s

单机上跑15个线程,当把数据文件放到tmpfs文件系统(就是内存)上时(关闭日志):(用java最优批量值200测试)

10w行数据,用时1.834 秒

50w行数据,用时3.675 秒

100w行数据,用时6.083 秒

200w行数据,用时8.925 秒

400w行数据,用时16.571 秒

800w行数据,用时28.028 秒

1600w行数据,用时59.664 秒

3200w行数据,用时112.542 秒

6400w行数据,用时221.21 秒

12800w行数据,用时439.727 秒

平均每行0.00580ms或 172413.79 行/s,速度与磁盘差不多,且速度不稳定。

单机上跑15个线程,使用内存引擎(关闭日志):(用java最优批量值200测试)

10w行数据,用时1.953 秒

50w行数据,用时3.659 秒

100w行数据,用时5.388 秒

200w行数据,用时10.355 秒

400w行数据,用时15.673 秒

800w行数据,用时28.524 秒

1600w行数据,用时56.583 秒

3200w行数据,用时118.314 秒

6400w行数据,用时235.432 秒

12800w行数据,用时500.552 秒

平均每行0.00597ms或167504.19行/s,速度还不如磁盘,且速度不稳定。



单实例,15线程,打开日志,800w:38.897 秒

3.两个单mongod实例分片 单mongos 单java进程 insert


4.两个单mongod实例分片 两个mongos 两台java机多线程 insert
单java机上跑15个线程,mongod实例关闭日志

100w行数据,用时18.027 秒

200w行数据,用时32.097 秒

400w行数据,用时82.682 秒

800w行数据,用时114.164 秒

1600w行数据,用时287.703 秒

3200w行数据,用时719.699 秒

6400w行数据,用时1383.29 秒

12800w行数据,用时3104.18 秒


关闭balancer,1600w 222.674秒

关闭balancer,3200w 417.274

关闭balancer,6400w 706.352



3.两mongod实例分片(带复本) 单mongos 单java进程 insert

通过一个mongos连接两个mongod片(在_id列上分片),每个mongod带一个副本,副本在另一个mongod上。

10w行数据,用时11.51 秒

50w行数据,用时44.249 秒

100w行数据,用时84.888 秒

200w行数据,用时163.932 秒

400w行数据,用时318.032 秒

800w行数据,用时634.035 秒











  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值