【发布时间】:2011-09-19 10:05:47
【问题描述】:
我正在寻找有关如何在以下情况下提高数据库性能的提示。
作为一个示例应用程序,我今天编写了一个相当简单的应用程序,它使用 Twitter 流 API 来搜索某些关键字,然后我将结果存储在 MongoDB 中。该应用程序是用 Node.js 编写的。
我正在存储 2 个集合。一个存储关键字和一组推文 ID,这些 ID 引用每条发现提及该关键字的推文。这些正在使用带有 {upsert:true} 的 .update() 添加到数据库中,以便将新 id 附加到“ids”数组中。
此集合中的示例文档如下所示:
{ "_id": ObjectId("4e00645ef58a7ad3fc9fd9f9"), "ids": ["id1","id2","id3"], “关键字”:“#chocolate” }
更新代码:
keywords.update({keyword: key_word},{$push:{ids: id}},{upsert:true}, function(err){})
第二个集合看起来像这样,只需使用 .save() 即可添加
{
"twt_id": "id1",
"tweet": { //big chunk of json that doesn't need to be shown }
}
我现在已经在我的 Macbook 上运行了它,它已经运行了大约 2 个小时。我正在存储大量数据,每分钟可能有数百个文档。目前 Mongodb 中的对象数量为 120k+。
我注意到,数据库进程的 cpu 使用率高达 84%,并且自从我开始最新的测试运行以来一直在逐渐上升。
我正在阅读有关设置索引的内容,但由于我正在添加文档而不是针对它们运行查询,因此我不确定索引是否会有所帮助。我想到的一个方面是 update() 可能正在进行查找,因为我正在使用 $push 并且索引可能对此有所帮助。
我应该注意什么来防止 MongoDB 占用越来越多的 CPU?
【问题讨论】:
-
具有慢速磁盘的 MacBook 不太可能是执行基准测试和谈论性能问题的正确选择..即使使用最新的 MacBook 硬件
-
@Blackmoon 接受的答案表明并非如此。
标签: performance mongodb node.js