【发布时间】:2013-01-23 23:21:55
【问题描述】:
我有大约 1.05 亿条类似的记录:
{
"post_id": 1314131221,
"date": 1309187001,
"upvotes": 2342
}
在 MongoDB 集合中。 我还有一个关于“post_id”和“date”的索引。
那么我需要这样做:
db.fb_pages_fans.find({
post_id: 1314131221,
date: {"$gt": 1309117001, "$lta": 1309187001}
}).sort({date: 1});
如果我在特定日期设置“日期”:
- 当它返回 30 条记录时,大约需要 130 毫秒
- 当它返回 90 条记录时,大约需要 700 毫秒
- 当它返回 180 条记录时,大约需要 1200 毫秒
当然我说的是第一个查询,第二个和更多的查询非常快,但我需要快速进行第一个查询。
90 条记录比我现在使用的 PostgreSQL 慢得多。为什么这么慢?
顺便说一句。在 1.05 亿条记录中为上述两个“列”创建索引大约需要 24 小时。
它在一台 12GB RAM 的机器上运行,这是我执行查询时来自 mongostats 的日志:
insert query update delete getmore command flushes mapped vsize res faults locked % idx miss % qr|qw ar|aw netIn netOut conn time
0 0 0 0 0 1 0 23.9g 24.1g 8m 0 0 0 0|0 0|0 62b 1k 1 18:34:04
0 1 0 0 0 1 0 23.9g 24.1g 8m 21 0 0 0|0 0|0 215b 3k 1 18:34:05
【问题讨论】:
标签: mongodb