如何从MongoDB中删除system.profile集合?

51

我正在对MongoDB数据库的查询进行性能分析。我遵循了这个链接。我试图删除集合system.profile中的所有数据,以便再次开始对不同查询进行基准测试。我尝试了以下代码,但是它会报错。

控制台语法

> db.system.profile.remove({})

错误

cannot delete from system namespace

如何删除该集合中的所有数据?如果不可能,如何从头开始进行分析?

3个回答

115

首先,通过将其级别设置为0来关闭分析。

db.setProfilingLevel(0)

然后你可以简单地删除该集合。

db.system.profile.drop()

现在你可以自由地去重新开始。


25
为了延续所接受的回答,有时候将其放在一行中会更有帮助:
db.setProfilingLevel(0); db.system.profile.drop(); db.setProfilingLevel(2);

我也发现将system.profile的大小设置为10MB(或更大),而不是其默认值1MB,非常有帮助:

db.setProfilingLevel(0); db.system.profile.drop(); db.createCollection("system.profile", {capped: true, size: 10 * 1024 * 1024}); db.setProfilingLevel(2);

4

请注意,配置文件的数量是有限制的!

为了创建一个保存更多查询记录的集合,请重新创建具有所需大小的集合。

db.setProfilingLevel(0)
db.system.profile.drop()
db.createCollection( "system.profile", { capped: true, size: 1024*1024*10 } )
db.setProfilingLevel(1, { slowms: 500 })

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接