返回顶部
首页 > 资讯 > 数据库 >mongodb慢查询分析
  • 196
分享到

mongodb慢查询分析

2024-04-02 19:04:59 196人浏览 安东尼
摘要

1.用慢查询日志(system.profile)找到超过500ms的语句  monGos>db.setProfilingLevel(1,500) 2.然后再通过.explain()

1.用慢查询日志(system.profile)找到超过500ms的语句 

monGos>db.setProfilingLevel(1,500)

2.然后再通过.explain()解析影响行数,分析为什么超过500ms【即看执行计划】 参见下文评论链接

3. 决定是否是缺失索引导致


#查看状态:级别和时间

PRIMARY> db.getProfilingStatus()

{ "was" : 1, "slowms" : 200 }

#查看级别

PRIMARY> db.getProfilingLevel()

1

#设置级别

PRIMARY> db.setProfilingLevel(2)

{ "was" : 1, "slowms" : 100, "ok" : 1 }

#设置级别和时间

PRIMARY> db.setProfilingLevel(1,200)

{ "was" : 2, "slowms" : 100, "ok" : 1 }

 Profiling级别说明

参数:

0:关闭,不收集任何数据。

1:收集慢查询数据,默认是100毫秒。

2:收集所有数据

注意:

  1  以上要操作要是在test集合下面的话,只对该集合里的操作有效,要是需要对整个实例有效,则需要在所有的集合下设置或则在开启的时候开启参数

  2 每次设置之后返回给你的结果是修改之前的状态(包括级别、时间参数)


2:不通过mongo shell


mongoDB启动的时候


mongod --profile=1  --slowms=200


或则在配置文件里添加2行:

profile = 1

slowms = 200

3:关闭Profiling

# 关闭

PRIMARY> db.setProfilingLevel(0)

{ "was" : 1, "slowms" : 200, "ok" : 1 }


4:修改“慢查询日志”的大小

#关闭Profiling

PRIMARY> db.setProfilingLevel(0)

{ "was" : 0, "slowms" : 200, "ok" : 1 }

#删除system.profile集合

PRIMARY> db.system.profile.drop()


慢查询(system.profile)分析 


 3.2: 分析

如果发现 millis 值比较大,那么就需要作优化

1  如果nscanned数很大,或者接近记录总数(文档数),那么可能没有用到索引查询,而是全表扫描。

2  如果 nscanned 值高于 nreturned 的值,说明数据库为了找到目标文档扫描了很多文档。这时可以考虑创建索引来提高效率。


‘type’的返回参数说明:


COLLSCAN  #全表扫描

IXSCAN  #索引扫描

FETCH  #根据索引去检索指定document

SHARD_MERGE  #将各个分片返回数据进行merge

SORT  #表明在内存中进行了排序(与老版本的scanAndOrder:true一致)

LIMIT  #使用limit限制返回数

SKIP  #使用skip进行跳过

IDHACK  #针对_id进行查询

SHARDING_FILTER #通过mongos #对分片数据进行查询

COUNT #利用db.coll.explain().count()之类进行count运算

COUNTSCAN #count不使用Index进行count时的stage返回

COUNT_SCAN #count使用了Index进行count时的stage返回

SUBPLA #未使用到索引的$or查询的stage返回

TEXT #使用全文索引进行查询时候的stage返回

PROJECTioN #限定返回字段时候stage的返回


对于普通查询,我们最希望看到的组合有这些:

Fetch+IDHACK

Fetch+ixscan

Limit+(Fetch+ixscan)

PROJECTION+ixscan

SHARDING_FILTER+ixscan

不希望看到包含如下的type:


COLLSCAN(全表扫),SORT(使用sort但是无index),不合理的SKIP,SUBPLA(未用到index的$or)

对于count查询,希望看到的有:

COUNT_SCAN

不希望看到的有:

COUNTSCAN


4  性能(explain) 参考mongodb 官网链接 见下文评论

您可能感兴趣的文档:

--结束END--

本文标题: mongodb慢查询分析

本文链接: https://lsjlt.com/news/46804.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mongodb慢查询分析
    1.用慢查询日志(system.profile)找到超过500ms的语句  mongos>db.setProfilingLevel(1,500) 2.然后再通过.explain()...
    99+
    2024-04-02
  • mongodb慢查询
    开启 Profiling 功能1. 直接在启动参数里直接进行设置      启动MongoDB时加上–profile=1 即可     还可以慢查...
    99+
    2024-04-02
  • MongoDB使用profile分析慢查询的步骤
    目录01 如何收集慢查询?02 system.profile慢查询集合分析03 慢查询分析利器---explain      在MongoDB中,如果发...
    99+
    2024-04-02
  • Redis-慢查询分析
    一.慢查询日志慢查询日志帮助开发和运维人员定位系统存在的慢操作。慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(慢查询ID,发生时间戳,耗时,命令的详细信息)...
    99+
    2024-04-02
  • mongodb 之慢查询
    mongodb中慢查询日志 1.开启查询日志.(1)动态开启,可以选择性的对指定DB开启慢查询日志,但服务器重启后慢查询日志又要人工手动开启。db.setProfilingLevel(1,300)...
    99+
    2024-04-02
  • 性能分析之MySQL慢查询日志分析(慢查询日志)
    一、背景            MySQL的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应的时间超过阈值的语句,具体指运行时间超过long_query_time(默认是10秒)值的SQL,会被记录到慢查询日志中。  ...
    99+
    2023-10-20
    mysql 数据库 慢日志分析 性能优化 慢查询日志
  • Redis慢查询日志及慢查询分析详解
    目录前提介绍单线程命令的处理机制本章内容什么是慢查询慢查询日志Redis慢查询日志Redis慢查询的危害Redis客户端执行一条命令的步骤慢查询引发的问题阈值和慢查询的日志的设置阈值...
    99+
    2023-01-28
    Redis慢查询日志分析 Redis慢查询
  • MongoDB慢日志查询
    MongoDB system.profile前言Part1:写在最前    说到MongoDB的慢日志分析,就不得不提到profile分析器,profile分析器将记...
    99+
    2024-04-02
  • mongodb分页查询太慢如何解决
    要解决MongoDB分页查询太慢的问题,可以考虑以下几个方面的优化:1. 使用索引:确保查询的字段上创建了适当的索引,特别是分页查询...
    99+
    2023-08-23
    mongodb
  • MySQL的慢查询实例分析
    这篇文章主要介绍“MySQL的慢查询实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL的慢查询实例分析”文章能帮助大家解决问题。1 概念MySQL的慢查询,全名是慢查询日志,是MySQ...
    99+
    2023-06-28
  • mysql慢查询分析工具之PT
    1. 工具简介pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdu...
    99+
    2024-04-02
  • MySQL慢查询日志举例分析
    这篇文章主要介绍“MySQL慢查询日志举例分析”,在日常操作中,相信很多人在MySQL慢查询日志举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL慢查询日志举例...
    99+
    2024-04-02
  • MySQL慢日志查询实例分析
    本篇内容介绍了“MySQL慢日志查询实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、慢查询日志概...
    99+
    2024-04-02
  • 在Linux下开启mysql慢查询,分析查询语句
    一,为什么要开启这个查询呢? 数据库是很容易产生瓶颈的地方,现在Nosql大家讨论这么热,估计都被数据库搞郁闷了。mysql中最影响速度的就是那些查询非常慢的语句,这些慢的语句,可能是写的不够合理或者是大数...
    99+
    2022-05-26
    Linux mysql 慢查询
  • mysql慢查询和错误日志分析
    mysql慢查询和错误日志分析和告警查看比较麻烦,目前的慢查询告警都是仅仅反应慢查询数量的。 我们做了一个慢查询日志告警和分析的程序 后台使用filebeat日志文件托运工具,将日志传输到redis数据库。...
    99+
    2024-04-02
  • mongodb 慢查询日志使用参考
    mongodb的Profiling功能->慢查询功能    Profiling 把收集到的信息写入到system.profile集合中,system.profile集合是...
    99+
    2024-04-02
  • mongodb慢查询日志怎么设置
    要设置MongoDB的慢查询日志,可以通过以下步骤进行: 打开MongoDB的配置文件。 在配置文件中找到以下选项:slow...
    99+
    2024-04-02
  • java操作mongoDB查询的示例分析
    小编给大家分享一下java操作mongoDB查询的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!java操作mongo查...
    99+
    2024-04-02
  • MySQL慢查询 ------ 开启慢查询
    一、简介开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。二、参数说明slow_query_log 慢查询开启状态slow_query_l...
    99+
    2024-04-02
  • 【MySQL】数据库慢查询日志分析--Lepus
    [root@wallet04 ~]# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm [root@wa...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作