关于pymongo两种连接方法MongoClient和Connection连接mongodb的写入效率分析

最近项目在使用mongoDB,用起来是挺好用的,但是用户上量之后,明显就感觉有点慢,为什么这么慢,我就开始慢慢的寻找原因。

结合网上的测试脚本以及一些朋友们的测试结果和我自己测试的结果,我发现mongoDB真的没有那么慢,那是我哪里写错了?

我就开始排查项目代码中中哪里和测试脚本中写的不一样,结果就找到了数据库的连接方式,项目中一开始采用的是现在pymongo推荐的MongoClient(ip,port)的方式,但是测试脚本中采用的是Connection(ip,port)的方式,经过不同数量级的测试得出了如下的结果:

方法

数量

时间(s)

Connection

1

0.000314950942993

MongoClient

1

0.000757217407227

Connection

10

0.00154709815979

MongoClient

10

0.00501179695129

Connection

100000

6.14999890327

MongoClient

100000

27.3278138638

Connection

1000000

59.0989689827

MongoClient

1000000

273.486183882


  • 结果分析

  从上表的结果可以看出,基本上MongoClient的连接方式插入数据的时间是Connection连接方式插入数据的4倍左右,当然数据量小的时候可能建立连接还有一些非相关的操作可能占的比重比较大,越到后来就越稳定。

  • 疑问

  1、这就让我产生了疑问,pymongo这两种方式的实现原理有怎样的不同之处,造成他们的写效率相差如此之多?

  2、项目中当然要采用连接效率比较高的方法,但是现在不知道实现的原理,心里就比较没底,不太确定的是Connection的方法虽然比较快,但是会不会需要手动管理连接资源;如果操作太多了的话会不会造成资源的占用

还请各位大神们推荐一些能够解决这些问题的地方,或者是给一下参考资料我自己去研究一下


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值