MONGODB 最近測試結果的簡單記錄

wei-xh發表於2014-01-18
測試目的:隨著集合資料量的增大,查詢效率會不會降低
測試了300W,1000W,5000W,一億,三億,五億資料量
測試結果:MONGO的表現非常穩定,每秒的查詢次數保持在84000到86000之間,隨著資料量的增大,查詢效率沒有明顯的下降
表結果:
> db.dnscoll.find()
{ "_id" : "Hcpp07cOXO1", "id2" : "000000000000000002", "id3" : "serverId", "id1" : "48545884402" }
{ "_id" : "igD4uZGWty3", "id2" : "000000000000000003", "id3" : "serverId", "id1" : "23878046284" }
{ "_id" : "g0pvRKGPn45", "id2" : "000000000000000004", "id3" : "serverId", "id1" : "82622388586" }
{ "_id" : "b6TuOm274H7", "id2" : "000000000000000005", "id3" : "serverId", "id1" : "74870401868" }
{ "_id" : "Q7yYbmIRag9", "id2" : "000000000000000006", "id3" : "serverId", "id1" : "600664002610" }
查詢語句:依據id2作為查詢條件,返回所有值

平均行長110個位元組
5G資料量下,表的大小50G,三個索引大小_id 25G,,id2 17G id1 17G
{
        "ns" : "dnsdb.dnscoll",
        "count" : 499999999,
        "size" : 52790399288,
        "avgObjSize" : 105.5807987871616,
        "storageSize" : 62862102144,
        "numExtents" : 50,
        "nindexes" : 3,
        "lastExtentSize" : 2146426864,
        "paddingFactor" : 1,
        "systemFlags" : 0,
        "userFlags" : 0,
        "totalIndexSize" : 64073529632,
        "indexSizes" : {
                "_id_" : 27570567584,
                "id2_1" : 18168911600,
                "id1_1" : 18334050448
        },
        "ok" : 1
}

每個索引的建立時間6個半小時
在2.4.6下索引建立的background引數沒有效果,依然阻塞本database的查詢、寫入操作。不知道其他 版本有沒有這個問題

資料預熱的方法:
移動資料檔案到記憶體
for file in /data/db/route.*
do
dd if=$file of=/dev/null
 done

移動集合到記憶體
use route
db.runCommand({"touch" : "bc", "data" : true, "index" : true})

前兩種方式都不會再mongostat的res裡看到
如何預熱一個索引
db.users.find({}, {"_id" : 0, "friends" : 1, "date" : 1}). hint({"friends" : 1, "date" : 1}).explain()

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-1072586/,如需轉載,請註明出處,否則將追究法律責任。

相關文章