Лениво загружает индексы. Он может даже загрузить только часть индекса, если он не нужен полностью для текущего запроса.
Чтобы продемонстрировать это:
- создайте коллекцию из нескольких тысяч документы, содержащие случайное целое число, например
{i: <int>}
- , создают индекс для
{i:1}
- , проверяют размеры индексов в коллекции, выполнив:
db.testcollection.stats().indexSizes
остановить mongod перезапустить mongod проверить количество данных в кеше с помощью
db.serverStatus().wiredTiger.cache["bytes currently in the cache"]
На этом этапе вы сможете обратите внимание, что общий объем данных в кеше меньше размера индексов в тестовой коллекции
запустить команду count с запросом, который будет охвачен первой частью индекса, например
db.testcollection.count({i:{$lt:50}})
повторно запустите команду serverStatus и обратите внимание на разницу в размере повторите шаги 7 и 8, обратите внимание, что размер не меняется, так как индекс уже загружен в память.
Если вы объясните команду count, она должна показывать ее с помощью этапа COUNT_SCAN, что означает, что она полностью обслуживается индексом и не требует загрузки каких-либо документов.