关于pymongo两种连接方法MongoClient和Connection连接mongodb的写入效率分析
2015-08-13 21:23
260 查看
最近项目在使用mongoDB,用起来是挺好用的,但是用户上量之后,明显就感觉有点慢,为什么这么慢,我就开始慢慢的寻找原因。
结合网上的测试脚本以及一些朋友们的测试结果和我自己测试的结果,我发现mongoDB真的没有那么慢,那是我哪里写错了?
我就开始排查项目代码中中哪里和测试脚本中写的不一样,结果就找到了数据库的连接方式,项目中一开始采用的是现在pymongo推荐的MongoClient(ip,port)的方式,但是测试脚本中采用的是Connection(ip,port)的方式,经过不同数量级的测试得出了如下的结果:
结果分析
从上表的结果可以看出,基本上MongoClient的连接方式插入数据的时间是Connection连接方式插入数据的4倍左右,当然数据量小的时候可能建立连接还有一些非相关的操作可能占的比重比较大,越到后来就越稳定。
疑问
1、这就让我产生了疑问,pymongo这两种方式的实现原理有怎样的不同之处,造成他们的写效率相差如此之多?
2、项目中当然要采用连接效率比较高的方法,但是现在不知道实现的原理,心里就比较没底,不太确定的是Connection的方法虽然比较快,但是会不会需要手动管理连接资源;如果操作太多了的话会不会造成资源的占用
还请各位大神们推荐一些能够解决这些问题的地方,或者是给一下参考资料我自己去研究一下
结合网上的测试脚本以及一些朋友们的测试结果和我自己测试的结果,我发现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的方法虽然比较快,但是会不会需要手动管理连接资源;如果操作太多了的话会不会造成资源的占用
还请各位大神们推荐一些能够解决这些问题的地方,或者是给一下参考资料我自己去研究一下
相关文章推荐
- nodejs+express+mongodb
- mongodb3.x远程登录和认证问题
- Centos7安装配置Mongodb3
- MongoDB基于GridFS管理文件
- MongoDB 读取文档
- MongoDB 自动分片 auto sharding
- MongoDB之增删改查(二)
- 第二课 MongoDB 数据模型
- 第三课 MongoDB 数据更新
- 测试mongoDB插入速度
- MongoDB简单操作指令
- mongodb中的数据库的备份和恢复/数据的导入和导出
- mongoDB搭建和运行简单的增删改查操作
- mongodb sort limit和skip用法
- MongoDB中的固定集合
- Elasticsearch与MongoDB 数据同步及分布式集群搭建 (二)
- Elasticsearch与MongoDB 数据同步及分布式集群搭建(一)
- spring4.0整合mongodb3.0.4项目实践(用户验证)
- 第一课 MongoDB 概述与安装
- mongodb官网文档阅读笔记:与写性能相关的几个因素