浅谈Mongodb性能优化
来源:互联网 发布:sql循环执行存储过程 编辑:程序博客网 时间:2024/05/16 05:17
项目中使用到了mongdb,在小数据量时,和关系型数据库一样,看不出任何问题。当数据的操作变的频繁,如对10万级的数据表连续进行查询操作,mongdb会变的非常缓慢。
到底是什么原因呢?
这是spring版本的mongdb操作,spring的MongoTemplate只是对源生方法的一些封装,如果spring环境下有这些问题,直接使用源生方法进行的数据操作也会产生同样的问题。
下面是我的优化过程:
1.建立索引,索引对mongdb的查询速度影响非常大,mongdb索引建立的方法网上有很多,我这里举一个实际的例子:
有个数据表叫Student,该表中name、age属性被用作查询条件,其中name被使用的频率非常大,age在特定的地方会和name同时作为查询条件,age几乎不会单独作为查询条件。
索引建立过程如下:
db.Student.ensureIndex({ "name" : 1, "age" : -1 },{ "name" : "name_age_index" });
如果使用MongoVUE客户端软件的话,直接添加索引输入:{ "name" : 1, "age" : -1 }即可。
最后记得建立索引后不要随便drop表。
2.优化代码,方法使用不当会显著影响mongdb性能,这里我列举一下我的使用经验:
a.单纯的更新数据操作使用 mongoTemplate.updateFirst() 或者mongoTemplate.updateMulti()代替mongoTemplate.findAndModify();
b.单纯的新增数据操作使用 mongoTemplate.insert()代替 mongoTemplate.save();
c.查询1条数据使用 mongoTemplate.findOne()代替 mongoTemplate.find()后遍历数据;
d.查询数据时注意数据量,如果使用mongoTemplate.find()的结果集过大,如10万100万,则数据会积压在内存中,这是非常危险的,尽量使用limit方法限制条数。
3.谨慎选择是否使用mongdb,在我们的项目使用过程中,确确实实的发现一些问题。选择使用Mongodb使要考虑服务器配置,因为Mongodb对内存是无限贪婪的,如果只有2G内存的服务器,还要运行其他服务等,部署Mongodb的话处理小数据量还是可以的,进行大量的数据处理是不适合的。在我看来使用NOSQL就是可以花最少的钱处理更多的数据量,并且对数据的安全性不是非常看重的情况,比如允许数据丢失,或者无法处理事务等情况。如果对数据安全性要求较高的情形下,建议慎重考虑。
1 0
- 浅谈Mongodb性能优化
- 开发高性能的MongoDB应用:浅谈MongoDB性能优化
- 开发高性能的MongoDB应用—浅谈MongoDB性能优化
- 开发高性能的MongoDB应用—浅谈MongoDB性能优化
- 开发高性能的MongoDB应用—浅谈MongoDB性能优化
- 开发高性能的MongoDB应用—浅谈MongoDB性能优化(转)
- mongodb 性能优化
- mongodb性能优化
- mongodb 性能优化深入浅出
- mongodb性能优化
- mongodb性能优化
- mongodb性能监控优化
- mongodb性能优化
- MongoDB性能优化
- MongoDB的性能优化
- MongoDB性能优化
- Mongodb性能优化
- mongodb性能优化
- iOS js oc相互调用(JavaScriptCore)(二)
- 错排问题
- 接口返回的死数据
- 常见的分布式文件系统简介
- django migrate error: table 'xxx' already exists
- 浅谈Mongodb性能优化
- java--WebService小例子【MyEclipse10】
- Navigation寻路详解
- 处理视频帧
- iOS代码对齐 ---XAlign
- Android开发框架
- 1215 - Cannot add foreign key constraint
- 将VIM改造成c++IDE
- 知乎小报项目介绍