C++简单测试MongoDB性能

由于不进入数据库,本文并不能代表mongodb性能,仅以此与IO做简单对比得出性能并不科学,但也能从侧面说明一定问题,给大家开发中一定的提示。

附: 本文测试并作于2012年初,由于录入博客时间较晚,可能有所差异,欢迎提供最新数据。


测试数据大小:531M

读取数据大小:10^7 字节

由于MongoDB最快的内存文件读写方式大致如下(不进入数据库):

  read(unsigned int nOffset , void *lpStore , unsigned int nStoreLen ),其每次读已默认进行了类似seek的偏移,因此,测试时使用seek 与没有 seek 的 同时进行测试,结果如下(单位:ms):

每次读1字节,共读10^7次,(seek对应10^7次)

without Seek

 Seek

MongoDB

265

5678

3885

281

5601

3916

265

5612

3791

272

5726

3842

264

5709

3850

280

5702

3872

265

5600

3940

266

5631

3912

 

每次读取10 字节 ,共读 10^6次:

without Seek

 Seek

MongoDB

31

608

390

31

562

406

31

577

390

47

577

390

16

577

375

31

577

390

31

562

422

31

577

390

31

562

390

 

读取10^7 BYTE 对于读取大内存块,两者性能几乎接近。

 

总结: 在测试中MongoDB对于连续性读取性能约仅为IO的1/10左右,但是相对每次进行偏移后取值存在较大优势(例如移动鼠标获取图像值,如下图),对于读取大内存,MongoDB性能与IO相差微乎其微。因此,颗粒度越大,MongoDB性能就越接近IO,如果将MongoDB作为底层,需要避免频繁小颗粒度的存取(零存整取)。


本文仅以简单方式测试了MongoDB不进入数据库下read,并不能代表MongoDB本身性能,只能说明如何更好的去应用它。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值