Mongo Database性能优化(2)

来源:未知 责任编辑:责任编辑 发表时间:2015-09-09 15:37 点击:
 
fastmod-Indicates a fast modify operation. See Updates. These operations are normally quite fast.   www.2cto.com  
 
fastmodinsert – indicates a fast modify operation that performed an upsert. 
 
upsert-表明update的upsert参数为true.此参数的功能是如果update的记录不存在,则用update的条件insert一条记录. 
 
moved-表明本次update是否移动了硬盘上的数据,如果新记录比原记录短,通常不会移动当前记录,如果新记录比原记录长,那么可能会移动记录到其它位置,这时候会导致相关索引的更新.磁盘操作更多,加上索引更新,会使得这样的操作比较慢. 
 
insert-这是一个insert插入操作. 
getmore-这是一个getmore 操作,getmore通常发生在结果集比较大的查询时,第一个query返回了部分结果,后续的结果是通过getmore来获取的。 
 
2、优化 
  www.2cto.com  
MongoDB 查询优化 
 
如果nscanned(扫描的记录数)远大于nreturned(返回结果的记录数)的话,那么我们就要考虑通过加索引来优化记录定位了。 
 
reslen 如果过大,那么说明我们返回的结果集太大了,这时请查看find函数的第二个参数是否只写上了你需要的属性名。(类似于MySQL中不要总是select *) 
 
对于创建索引的建议是:如果很少读,那么尽量不要添加索引,因为索引越多,写操作会越慢。如果读量很大,那么创建索引还是比较划算的。 
 
MongoDB 更新优化 
 
如果写查询量或者update量过大的话,多加索引是会有好处的。以及~~~~(省略N字,和RDBMS差不多的道理) 
 
Use fast modify operations when possible (and usually with these, an index). See Updates. 
 
Profiler 的效率 
 
Profiling 功能肯定是会影响效率的,但是不太严重,原因是他使用的是system.profile 来记录,而system.profile 是一个capped collection 这种collection 在操作上有一些限制和特点,但是效率更高。   www.2cto.com  
 
优化建议: 
 
如果 nscanned 远大于 nreturned,那么需要使用索引。 
如果 reslen 返回字节非常大,那么考虑只获取所需的字段。 
执行 update 操作时同样检查一下 nscanned,并使用索引减少文档扫描数量。
 
使用 db.eval() 在服务端执行某些统计操作。 
减少返回文档数量,使用 skip & limit 分页。
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Request.ServerVariables 参数大全
  • 查看sql修改痕迹(SQL Change Tracking on Table)
  • 写给MongoDB开发者的50条建议Tip1
  • Percolator与分布式事务思考(二)
  • App数据层设计及云存储使用指南
  • PostgreSQL启动过程中的那些事三:加载GUC参数
  • SQL Server、Oracle、db2所提供的简装版(Express)比较
  • PostgreSQL 安装问题
  • 【自主研发-贡献给SQL Server人员】索引诊断与优化软件使用说明

数据库技术导航

SqlserverMysqlOracleDB2数据库数据库综合
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1