Есть ли способ заставить mongodb хранить определенный индекс в оперативной памяти?

У меня есть коллекция с относительно большим индексом (но меньше, чем доступно оперативной памяти) и глядя на производительность поиска в этой коллекции и количество свободной оперативной памяти в моей системе, заданное htop, кажется, что монго не хранит полный индекс в оперативной памяти. Есть ли способ заставить монго хранить этот конкретный индекс в оперативной памяти?

Пример запроса:

> db.barrels.find({"tags":{"$all": ["avi"]}}).explain()
{
        "cursor" : "BtreeCursor tags_1",
        "nscanned" : 300393,
        "nscannedObjects" : 300393,
        "n" : 300393,
        "millis" : 55299,
        "indexBounds" : {
                "tags" : [
                        [
                                "avi",
                                "avi"
                        ]
                ]
        }
}

Не все объекты помечены тегом «avi»:

> db.barrels.find().explain()
{
        "cursor" : "BasicCursor",
        "nscanned" : 823299,
        "nscannedObjects" : 823299,
        "n" : 823299,
        "millis" : 46270,
        "indexBounds" : {

        }
}

Без «$all»:

db.barrels.find({"tags": ["avi"]}).explain()
{
        "cursor" : "BtreeCursor tags_1 multi",
        "nscanned" : 300393,
        "nscannedObjects" : 300393,
        "n" : 0,
        "millis" : 43440,
        "indexBounds" : {
                "tags" : [
                        [
                                "avi",
                                "avi"
                        ],
                        [
                                [
                                        "avi"
                                ],
                                [
                                        "avi"
                                ]
                        ]
                ]
        }
}

Также это происходит, когда я ищу два или более тега (он сканирует каждый элемент как если не было индекса):

> db.barrels.find({"tags":{"$all": ["avi","mp3"]}}).explain()
{
        "cursor" : "BtreeCursor tags_1",
        "nscanned" : 300393,
        "nscannedObjects" : 300393,
        "n" : 6427,
        "millis" : 53774,
        "indexBounds" : {
                "tags" : [
                        [
                                "avi",
                                "avi"
                        ]
                ]
        }
}
7
задан Community 22 September 2017 в 18:01
поделиться