【转】mongodb可以通过profile来监控数据 (mongodb性能优化)

开启 Profiling
 功能
 ,对慢查询进行优化:

mongodb可以通过profile来监控数据,进行优化。

查看当前是否开启profile功能用命令

db.getProfilingLevel()
 返回level等级,值为0|1|2,分别代表意思:0代表关闭,1代表记录慢命令,2代表全部

db.setProfilingLevel(level);  #level等级,值同上

level为1的时候,慢命令默认值为100ms,更改为db.setProfilingLevel(level,slowms)如db.setProfilingLevel(1,50)这样就更改为50毫秒

通过db.system.profile.find() 查看当前的监控日志。

如:

> db.system.profile.find({millis:{$gt:500}})
{ "ts" : ISODate("2011-07-23T02:50:13.941Z"), "info" : "query order.order reslen:11022 nscanned:672230 \nquery: { status: 1.0 } nreturned:101 bytes:11006 640ms", "millis" : 640 }
{ "ts" : ISODate("2011-07-23T02:51:00.096Z"), "info" : "query order.order reslen:11146 nscanned:672302 \nquery: { status: 1.0, user.uid: { $gt: 1663199.0 } } nreturned:101 bytes:11130 647ms", "millis" : 647 }

这里值的含义是

ts:命令执行时间

info:命令的内容

query:代表查询

order.order: 代表查询的库与集合

reslen:返回的结果集大小,byte数

nscanned:扫描记录数量

nquery:后面是查询条件

nreturned:返回记录数及用时

millis:所花时间

如果发现时间比较长,那么就需要作优化。

比如nscanned数很大,或者接近记录总数,那么可能没有用到索引查询。

reslen很大,有可能返回没必要的字段。

nreturned很大,那么有可能查询的时候没有加限制。

原文转自:http://my.oschina.net/baowenke/blog/97756

时间: 2024-12-27 09:13:32

【转】mongodb可以通过profile来监控数据 (mongodb性能优化)的相关文章

mongodb通过profile来监控数据

mongodb可以通过profile来监控数据,进行优化.查看当前是否开启profile功能用命令db.getProfilingLevel() 返回level等级,值为0|1|2,分别代表意思:0代表关闭,1代表记录慢命令,2代表全部开启profile功能命令为 db.setProfilingLevel(level); #level等级,值同上 level为1的时候,慢命令默认值为100ms, 更改为db.setProfilingLevel(level,slowms)如db.setProfili

Qt高级——Qt数据可视化性能优化

Qt高级--Qt数据可视化性能优化 一.数据可视化简介 1.数据可视化简介 数据可视化即采用图形图表等对采集的数据进行展示,可以非常直观的查看传感器采集到的数据.本文将使用Qt的标准组件QTableWidget.标准模型.自定义模型分别实现对数据的表格展示. 2.系统环境 个人PC:ThinkPad T450操作系统:RHEL7.3 WorkStation内存容量:8G磁盘容量:SSD 100GCPU:Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz 二.标准界面

数据库插入或者更新大批量数据的性能优化

对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的. 经过对MySQL InnoDB的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考. 1.一条SQL语句插入多条数据 常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUE

存储性能差?杉岩数据分布式存储性能优化方案

作为明星产品,杉岩海量对象存储(SandStone MOS)在企业级市场顺势推出后,即受到了广泛的认可和接纳,它在众多企业级用户的场景中具备独特的价值属性,例如:海量小文件的访问性能保障.分支总部间的信息高速分发.数据中心级的双活或多活容灾等等,都让用户在面临PB级甚至EB级规模的非结构化数据存储时,有了一个全新的兼顾成本和服务的选择. SandStone MOS 在接口兼容性.数据安全性.业务高可用.全局便捷运维.数据生命周期管理等场景上进行了全新的补充和完善,接下来将为您详细解读关键功能的价

Sqlite大数据写入性能优化

众所周知,Sqlite是一个轻量级的数据库,仅仅需要一个exe文件就能运行起来.在处理本地数据上,我比较喜欢选择使用它,不仅是因为他与sql server有着比较相近的语法,还因为它不需要安装,仅需要通过命令行就能启动了,而且他在处理大数据时,性能比sql server好很多,好吧这里不继续争论性能优劣. 首先,这次的问题是在一次项目中遇到的,项目要求能大量导入数据,而且由于项目性质(轻便,本地化),所以我选择sqlite来存放数据. 第一版代码: 1 StringBuilder sql = n

关于数据库优化3——在数据库插入、更新大量数据的性能优化

在真实的业务场景中,我们肯定是遇到过有时候需要大批量的数据要进行入库或者是更新.这时候我们在执行这种插入,或者是更新的时候肯定会遇到数据库效率的问题,我们首先能想到的是让事物尽量保持一致,统一去提交事务,这样肯定会有一定的效率提示. ok.在我们在考虑了这个事情之后,我们可以在来看一下表里是否存在索引,如果存在索引,我们可以做一个这样的操作:首先在插入大量数据的时候,先把索引废除掉,等插入完成后在把索引重新建立.我在这里做了一个简单的实验,整理了一下实验的结果,有了下面的一个执行效率的图. 实验

Skyline Web 端数据浏览性能优化

三维数据的效率一直是个瓶颈,特别是在Web端浏览一直是个问题,在IE内存限制1G的条件下,对于三维数据动不动几十G的数据量,这1G显得多么微不足道.虽然现在三维平台都是分级加载,或者在程序中采用数据分不同片区加载来降低一次性加载的模型数据,但是在浏览器中浏览三维数据崩溃问题仍然一直存在.最近在维护一个老的Skyline的项目,客户提出了在看二维数据的同时也可以看三维数据,需求很简单,实现也很容易,唯一的问题是浏览效率,能不能浏览?浏览效率怎么样?而且政府单位的电脑配置都是很一般.毕竟也做了这么多

Django之使用redis缓存session,历史浏览记录,首页数据实现性能优化

Redis缓存session 配置Django缓存数据到redis中 # diango的缓存配置 CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", # 用户的session信息,历史浏览记录存储在redis数据库9中 "LOCATION": "redis://127.0.0.1:6379/9", "OPTIONS

XenApp/XenDesktop监控数据查询、提取

在XenDesktop中,Director为管理员提供了整个平台的监控和健康状态的信息,让管理员方便的了解Citrix的平台的运行状态以及实时发生的故障.这些监控数据从哪儿来?在XenDesktop的先前版本中,Director中的大多数数据都是通过直接访问Broker Service API来检索的.使用此API的缺点是此服务不包括对使用的历史信息的检索,即只能检索实时会话信息.如果管理员需要向以前的监控组件Edgesight那样检索历史数据,比如管理员可能想知道目前有多少会话处于活动状态,以