MongoDB 备忘

常规操作

查看有没有启动 mongodb
ps -def | grep mongod

看看是否能够登录
mongo

查询当前所在的数据库
db

切换或创建数据库
use DATABASE_NAME

查看所有数据库
show dbs / show databases

查看所有数据集合(表)
show collections

慢查询

登录需要开启慢查询的数据库
use DBNAME

查看慢查询状态
db.getProfilingStatus()
输出:

{ "was" : 0, "slowms" : 100, "sampleRate" : 1 }

其中 was 字段可以取0,1,2 三个值,他们表示的意义如下:
  0 – 不开启
  1 – 记录慢命令 (默认为>100ms)
  2 – 记录所有命令
slowms 则是记录的阈值,以毫秒为单位。

如果要开启慢日志收集,又不需要收集所有慢日志,只需要收集小于 200ms 的慢日志可以使用如下命令
db.setProfilingLevel(1, 200)

使用如下命令可以关闭慢日志
db.setProfilingLevel(0)

查看当前所有的慢查询日志
db.system.profile.find()

通过filter参数过滤日志

db.system.profile.find(
{"millis": {"$gte":1000}, "ts": {"$gte": ISODate("2023-11-08T02:23:25.289Z")}}
).pretty()

返回数据字段意义:
ts:时间戳
op: 操作类型
ns:执行操作的对象集合
millis:操作所花时间,毫秒
client: 执行操作的客户端
user: 执行操作的mongodb连接用户

当前操作

当 Mongodb 返回很慢,进程也占用 CPU 很多,就想要了解当下数据库正在执行什么查询。这个时候就要用到 db.currentOp()

可以在 sh 中直接运行,但会有很多数据出来。可以加入过滤参数。如:

db.currentOp(
   {
     "active" : true,
     "secs_running" : { "$gt" : 3 },
     "ns" : /^db1\./
   }
)

可以过滤出 db1 数据库中的已经运行超过 3 秒的活跃操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值