8

我正在尝试收集关于我的 Applciation 发生在 mongodb 上的所有查询。所以我将分析级别设置为 2,以便记录所有查询。作为架构的一部分,一旦用户登录,mongodb 就会发生连续的更新。

但我观察到的是system.profile计数正在减少不知道为什么

> db.system.profile.count()
322
> db.system.profile.count()
351
> db.system.profile.count()
202
> db.system.profile.count()
136
> db.system.profile.count()
233

为什么在我的情况下查询被覆盖?

有没有可能我可以记录我的应用程序发生的所有不同查询。

我需要这个,因为我可以在我的一个集合上删除/添加一些索引。

4

2 回答 2

26

system.profile 是一个有上限的集合,默认大小为 1MB,因此文档在自然(相对于插入时间戳)的基础上被清除,以便为较新的文档腾出空间。

为了增加 system.profile 集合的大小(比如 10 MB),请执行以下操作:

1)停止探查器:db.setProfilingLevel(0)

2)删除system.profile:db.system.profile.drop()

3) 手动创建一个更大的 system.profile 集合:db.createCollection( "system.profile", { capped: true, size: 1024 * 1024 * 10 } )

4) 再次启用分析

如果平均而言,一个 1MB 的集合适合大约 200-300 个文档,那么新设置将适合大约 2,000 - 3,000 个文档。根据需要增加 system.profile 的大小。

于 2013-08-29T12:42:57.117 回答
1

这是官方文档链接 https://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/#profiler-overhead

您需要使 system.profile 集合的集合更改大小

于 2016-04-19T17:50:11.560 回答