您的位置:首页 > 数据库 > Mongodb

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

2015-08-13 21:23 260 查看
最近项目在使用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的方法虽然比较快,但是会不会需要手动管理连接资源;如果操作太多了的话会不会造成资源的占用
还请各位大神们推荐一些能够解决这些问题的地方,或者是给一下参考资料我自己去研究一下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: