1
我有類似這樣的周圍105 milions記錄:優化MongoDB的
{
"post_id": 1314131221,
"date": 1309187001,
"upvotes": 2342
}
MongoDB中收集
。 我也有一個關於「post_id」和「日期」的索引。
那麼我要做到這一點:
db.fb_pages_fans.find({
post_id: 1314131221,
date: {"$gt": 1309117001, "$lta": 1309187001}
}).sort({date: 1});
如果我設置在特定日期 「日期」:
-
當它返回30條記錄
- ,花了〜130MS
- 當返回90條記錄,花費約700ms
- 當它返回180條記錄時,花費約1200ms
當然我在說第一個查詢,第二個和更多的查詢速度非常快,但我需要快速地進行第一個查詢。
從90個記錄開始,它比我現在使用的PostgreSQL慢得多。爲什麼這麼慢?
btw。在105mil記錄中提到的兩個「cols」創建索引需要大約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