当前位置: 首页 > news >正文

mongodb慢查询优化 速度欻欻滴~

简介

​ mongodb 的慢查询在操作系统中一般表现为 CPU 飙升;再应用中一般表现为返回缓慢;再优化过程中可以先针对参数进行优化,调整机器内存占用,然后开启慢查询记录,根据慢查询信息来选择优化方案。

参数调整

配置文件调整参数

可以将缓存大小设置为系统可用内存的 50%~70%。

# yaml格式
storage:wiredTiger:engineConfig:cacheSizeGB: 4  # 设置 WiredTiger 缓存大小GB
# conf格式
wiredTigerCacheSizeGB=4  # 设置 WiredTiger 缓存大小GB

开启慢查询

检查是否开启

use admin
db.getProfilingStatus()
{ "was" : 0, "slowms" : 200 }
# 第一个值(0:表示没开启慢查询;1:表示记录慢查询;2:表示记录所有操作)

开启慢查询

修改配置文件

# yaml格式
operationProfiling:mode: slowOpslowOpThresholdMs: 1000 
# conf格式
profile=1
slowms=1000

重启mongo即可

在线修改

mongo中需要按库修改慢查询

use database // 进入库
db.setProfilingLevel(1, 1000) // 开启慢查询并设置慢查询时间为 1000ms(1 秒)。

检查

use admin
db.getProfilingStatus()
{ "was" : 1, "slowms" : 1000 }
# 第一个值(0:表示没开启慢查询;1:表示记录慢查询;2:表示记录所有操作)

获取慢查询

先查询当前CPU占用信息,以确定优化前后的效果。

查询最慢的20条记录

use database
# 查询最慢的20条记录
db.system.profile.find().sort({ millis: -1 }).limit(10).pretty()# 查询最近5条记录
db.system.profile.find().sort({ ts: -1 }).limit(5).pretty()# 检查特定集合的慢查询
db.system.profile.find({ns: '你的数据库名.你的集合名'}).sort({ millis: -1 }).limit(10).pretty()
关键字段含义与诊断价值
planSummary显示查询的执行计划。如果值是 COLLSCAN(全集合扫描),通常就是性能瓶颈的明确信号,说明查询没有使用索引。
docsExamined数据库为了执行查询而扫描的文档数量。这个数值越大,说明查询效率越低。
keysExamined扫描的索引条目数量。如果远大于 nreturned(返回的文档数),可能意味着索引效率不高或需要优化。
millis查询执行的总耗时(毫秒),是判断慢查询的直接依据。

查询当前操作

navicat中会折叠一些关键信息,需要展开一些字段查看

db.currentOp()
inprog	desc	threadId	connectionId	client	active	opid	secs_running	microsecs_running	op	ns	query	query.f_vehicleGasLpn	query.currentOp	planSummary	numYields	locks	waitingForLock	lockStats	appName
(Document) 16 Fields	conn48	38524	48	19.196.5.254:52729	true	60140	1	1247886	update	dss.realtime_gascc2025	(Document) 1 Field	吉ADN1633		COLLSCAN	2756	(Document) 3 Fields	false	(Document) 3 Fields	
(Document) 16 Fields	conn47	38184	47	19.196.5.254:52731	true	60157	0	674181	update	dss.realtime_gascc2025	(Document) 1 Field	吉A17SH5		COLLSCAN	1764	(Document) 3 Fields	false	(Document) 3 Fields	
(Document) 16 Fields	conn46	35728	46	19.196.5.254:52728	true	59899	6	6070741	update	dss.realtime_gascc2025	(Document) 1 Field	吉AK200挂		COLLSCAN	14162	(Document) 3 Fields	false	(Document) 3 Fields	
(Document) 16 Fields	conn45	38608	45	19.196.5.254:52726	true	60093	2	2834038	update	dss.realtime_gascc2025	(Document) 1 Field	吉C1T567		COLLSCAN	6909	(Document) 3 Fields	false	

分析慢查询

explain 方法分析慢查询,获取详细的执行计划。

db.your_collection.find({ your_slow_query }).explain("executionStats")

创建索引

查看现有索引

use database# 返回一个数组,详细列出集合中的所有索引
db.集合名字.getIndexes()# 查看集合统计信息 返回集合的统计信息,其中包含索引总数和总索引大小等
db.集合名字.stats()

后台创建索引

在创建索引时必须选择后台创建索引,防止集合被锁定。

use database
db.realtime_gascc2025.createIndex({ "f_vehicleGasLpn": 1 }, { background: true })
# realtime_gascc2025:集合名字
# f_vehicleGasLpn:字段名

查询正在创建索引的操作

navicat中会折叠一些关键信息,需要展开一些字段查看

db.currentOp({$or: [{ op: "command", "query.createIndexes": { $exists: true } },{ op: "insert", ns: /\.system\.indexes\b/ },{ op: "none", desc: /Index Build/ } ]
})

再 msg 信息中会显示创建索引的进度

inprogdescthreadIdconnectionIdclientappNameactiveopidsecs_runningmicrosecs_runningopnsquerymsg(重点)progressnumYieldslockswaitingForLocklockStats
(Document) 18 Fieldsconn553856855127.0.0.1:52789NavicatTRUE733657373723096commanddss.$cmd(Document) 2 FieldsIndex Build (background) Index Build (background): 1060519/2345699 45%(Document) 2 Fields8580(Document) 3 FieldsFALSE(Document) 3 Fields

查看CPU 是否下降。

http://www.dtcms.com/a/461249.html

相关文章:

  • 从零开始的C++学习生活 6:string的入门使用
  • 风景网站模板济南seo关键词排名工具
  • UE5 测量 -1,长度测量:P2制作定位球与定位线,P3制作射线检测节点,P4在鼠标位置生成定位球
  • UE5 GAS GameAbility源码解析 EndAbility
  • 潍坊网站建设 潍坊做网站外贸网站服务器推荐
  • 第7章 n步时序差分(3) n 步离轨策略学习
  • 【Leetcode hot 100】35.搜索插入位置
  • Django ORM 字段查询表达式(Field lookup expressions)
  • 设计模式--组合模式:统一处理树形结构的优雅设计
  • 推荐算法学习笔记(十九)阿里SIM 模型
  • 高级网站开发工程师证书现代网站建设
  • 只能在线观看的电影网站咋么做wordpress教程 菜单
  • echarts画一个饼图
  • 基于改进YOLO算法的果园环境中障碍物识别与检测技术研究
  • 三元锂电池和磷酸铁锂电池:从原子晶格到应用哲学的深度解析
  • vscode-background 扩展的原理、配置和使用
  • 2100AI相亲(三)
  • 时钟服务器主地址
  • 瑞安学校网站建设口碑好网站建设价格
  • 自己做的网站访问不了建设网站哪些公司好
  • SpringMVC启动流程
  • HTTP 请求方法与参数上传形式的关系
  • 如何减少 Elasticsearch 集群中的分片数量
  • 当通过API发送请求的方式自动触发Jenkins job报错HTTP Status 403 – Forbidden的解决办法
  • 一个网站如何工作流程建立网站需要哪些手续
  • H3C网络设备 实验二:搭建两个局域网,使两个局域网相互通信(路由器,固定ip)
  • 临平房产做网站的公司wordpress屏蔽功能org
  • Skywalking 的本地开发配置
  • iOS 上架 App 全流程实战,应用打包、ipa 上传、App Store 审核与工具组合最佳实践
  • JavaScript核心构成与基础语法详解2