共享下MongoDB子对象搜索性能测试数据

MongoDB支持索引,一个集合上可以创建唯一、非唯一索引,可以建立几个索引。可以将多列组合起来做成复合索引。通过索引检索数据性能很好,如果没有索引进行检索,会导致全集合的扫描,性能很差。即使他是内存数据库。

由于我最近的项目上需要子对象集合,需要对其进行检索为此针对此进行了一次验证。这里将验证的结果共享给大家。
集合样例:
{gid:"sadfasdfadsfasdf",gList:[{gtag:"asdfasdf"},{gtag:"yyjsdhfg"},{gtag:"dfsdf8899"},gtype:"abc"}
其中gid是全局唯一的,gtype总共只有7个值。gList里面的子集合(子对象)的个数是随机的,个数范围在3到200之间。其中只有5000条数据有gtag,其他数据没有gtag。
分别有三个应用,第一个应用需要按照gid检索数据,第二个应用需要通过gtag检索数据,第三个应用通过gtype检索数据。
为了获得性能,需要做一个测试。为了得到的数据接近实际情况,我将生产系统的数据拿来做测试。考虑到32位mongodb处理的数据条目可字节数的限制,灌入120万条数据,再多的数据会导致mongodb无法简历索引,mongoDB不可用。
为了测试其性能,首先进行一次全集合的遍历,将所有的数据读入内存。测试情况如下:

1、 分别就gid、gtag、gtype建立索引,进行检索。每个业务执行10万次。返回结果集中第一条数据。
得到结果:
检索gid业务消耗时间平均为0.6毫秒 ,检索gtype业务消耗时间平均为1.3毫秒,检索gTag业务消耗时间为7毫秒
2、返回列对性能的影响
返回的列数、列的复杂度、以及每行的字节数会影响到性能。越复杂的列、列数越多、返回的字节数越多,消耗时间越多。

由于时间关系,没有进行分页业务的性能的测试。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值