MongoDB开启查询日志

概述

今天遇到系统的页面加载有点慢,然后就分析了一下页面的请求时间,虽然在 HTTP 的传输上花了不少时间,但是,同时响应时间也很长,于是就想看数据库的性能如何。本文将简单介绍一下如何不重启 MongoDB 开启查询日志。

Profiling Level

MongoDB 提供了三个 profiling 级别,用于控制查询日志的记录方式:

  • Level 0: 关闭 profiling,不记录任何查询日志。适用于对性能影响敏感的场景。
  • Level 1: 仅记录慢查询日志,即那些执行时间超过 slowms 参数指定时间的查询。适用于需要监控性能瓶颈。
  • Level 2: 记录所有查询日志,包括慢查询和快速查询。但对性能有一定影响。

slowms

slowms 参数用于定义慢查询的阈值。当 profiling 级别设置为1或更高时,执行时间超过 slowms 的查询就会被记录。

操作步骤

开启查询日志

使用MongoDB的命令行输入

> use myDb
switched to db myDb

> db.getProfilingLevel()
0

> db.setProfilingLevel(2)
{ "was" : 0, "slowms" : 1, "ok" : 1 }

> db.getProfilingLevel()
2

> db.getProfilingStatus()
{ 
  "was" : 1, 
  "slowms" : 100, 
  "sampleRate" : 1 
}

> db.system.profile.find().pretty()

分析日志

可以使用MongoDB官方推荐的免费可视化工具Compass分析日志。

关闭查询日志

使用以下命令关闭日志并清空日志数据。

db.setProfilingLevel(0)
db.system.profile.drop()

参考链接

MongoDB SetProfilingLevel

创建时间:2023-02-02
最后修改:2023-02-02

反馈