Mongo对巨大数据的随机抽样非常慢

时间:2018-03-07 15:50:50

标签: mongodb random sampling

我们拥有超过2000万份文档的集合。 这些文档存储了一年多的所有用户活动相关数据,平均约为2-3kb。 当我们根据特定字段进行计数时,结果将在1.5分钟内返回,但同样的查询具有5%的样本量I.e 100万条记录需要超过2.5分钟。 我们什么时候应该使用随机抽样功能mongo? 使用此功能时是否可以进行任何优化。 由于排序内存限制,allowdiskuse也必须设置为true。

MongoDB版本3.6.2 硬件规格 - 具有24核,128GB RAM,SSD硬盘的3个碎片

Mongo sample doc :
{
    "_id" : ObjectId("579728dfc6df0a06af162df3"),
    "userid" : 3708399,
    "ts" : 160726143951,
    "lists" : [
        {
            "listid" : 119,
            "modified" : 160726143951,
            "entered" : 160726143951
        },
        {
            "listid" : 1220,
            "modified" : NumberLong("170405120718"),
            "entered" : NumberLong("170405120718")
        },
    ],
    "attributes" : {
        "email" : "example@example.com",
        "unique" : "sampleFk",
        "mobile" : "9********9",
        "d" : 0,
        "bl" : 0,
        "state" : "Statename",
        "name" : "firstname",
        "code" : "01000000184D38B12D6E18E382B7AFB441B0499EFBC2D275B7BEC1F574A19E0D4E385D09",
        "city" : "CityName",
        "age" : 26,
        "gender" : "Male",
        "country" : "CountryName",
    },
    "sms_sent" : [
        {
            "message_id" : 975,
            "sentdate" : 170405,
            "senttime" : 170235
        },
        {
            "message_id" : 1039,
            "sentdate" : 170418,
            "senttime" : 163251
        },
        {
            "message_id" : 1054,
            "sentdate" : 170421,
            "senttime" : 163223
        },
    ],
    "sms_delivered" : [
        {
            "message_id" : 975,
            "sentdate" : 170405,
            "senttime" : 170235
        },
        {
            "message_id" : 1039,
            "sentdate" : 170418,
            "senttime" : 163251
        }
    ],
    "email_sent" : [
        {
            "message_id" : 464,
            "sentdate" : 170411,
            "senttime" : 121215
        },
        {
            "message_id" : 478,
            "sentdate" : 170425,
            "senttime" : 104551
        }
    ],
    "sms_clicked" : [
        {
            "message_id" : 975,
            "clickdate" : 170405,
            "clicktime" : 171035,
            "linkid":15
        }
    ],
    "email_clicked" : [
        {
            "message_id" : 464,
            "sentdate" : 170411,
            "senttime" : 131215
            "linkid":56
        }
    ]
}

平均文件大小:2KB

Query : 
db.collection.aggregate(
        [
            {$sample:{size:1339576}},
            {$match:{"attributes.city":"Kolkata"}},{$count:"count"}
        ],{allowDiskUse:true})

由于

0 个答案:

没有答案