mongoDB ruby driver性能测试与优化建议

本文通过使用RubyDriver对MongoDB进行性能测试,详细对比了不同查询方式的效率,并提出了针对索引使用的优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用mongo的ruby driver进行测试。

测试脚本见附件

 

测试基本结果:

 

                                                |   MONGO |
-----------------------------------------------------------
find_one,find_first                       x1000 |   0.223 |
find by id                                x1000 |   0.304 |
find by index(composite index)            x1000 |   0.539 |
find use index and other field            x1000 |   0.871 |
find use a field in index field             x10 |  10.479 |
find not use index(1 field)                 x10 |   6.690 |
find not use index(2 field)                 x10 |   5.405 |
insert 1000 doc                              x1 |   0.337 |
update                                    x1000 |   0.079 |
remove 1000 doc                              x1 |   0.074 |

 

结果分析:

 

1. 索引查找:复合索引比单列索引查找要慢,本次测试是三个字段复合索引。0.304 vs 0.539

 

2. 无索引查找:查找的字段越多,越慢。5.405(一个字段) vs 6.690(二个字段) vs 10(四个字段)

 

3. 用复合索引的一个字段等于没有用索引。find use a field in index field             x10 |  10.479 |

 

4. 对子文档字段查找比一般字段要慢。5.405 vs 10.479

 

优化建议:

 

1. 设计好索引很关键!避免对子文档的字段零散操作,可以专门做一个数组字段(mongo强大之处)作为索引。

 

2. 尽量避免多字段,子文档无索引查找 。当文档数超过一百万时,查找时间将达到秒级

 

3. 复合索引是个整体 ,如果要对其中一个字段做查找,要专门再建一个索引。

 

基本上mongo性能非常好(包括复合索引),在索引上要小心,很多地方可以大胆使用!

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值