MongoDB медленный запрос с использованием индексов - PullRequest
0 голосов
/ 10 декабря 2018

У меня MongoDB работает в Docker-контейнере с использованием compose:

mongodb:
image: mongo:4
ports:
  - "27017:27017"
restart: always
command: --wiredTigerCacheSizeGB=10
environment:
  MONGO_INITDB_ROOT_USERNAME: ${MONGODB_USER}
  MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_USER_PASS}
volumes:
  - ${MONGODB_DATADIR}:/data/db

MONGODB_DATADIR определяет местонахождение каталога хост-машины, и это обычный жесткий диск (не SSD).В моей БД у меня есть коллекция с некоторыми документами.Вот некоторые характеристики:

{
    "ns" : "domains.domains",
    "size" : 5679596048.0,
    "count" : 38396115,
    "avgObjSize" : 147,
    "storageSize" : 1884860416.0,
    "capped" : false,
    "wiredTiger" : {
        ...
    },
    "nindexes" : 7,
    "totalIndexSize" : 2701312000.0,
    "indexSizes" : {
        "_id_" : 387567616,
        "URL_1" : 1452449792.0,
        "checkedBySEO_1" : 187138048,
        "checkedByUclassify_1" : 184221696,
        "is_alive_1" : 184528896,
        "SEO_in_batch_1" : 176033792,
        "uclassify_in_batch_1" : 129372160
    },
    "ok" : 1.0
}

Как видите, у меня в коллекции несколько индексов.И все, что я хочу сделать, - это считать документы простым запросом с использованием индекса.Как таковой: db.getCollection('domains').find({"checkedByUclassify":false}).count();.И это займет более 10 секунд.И MongoDB использует один процессор на 100% и не использует память, которую он может использовать: MongoDB query top

Учитывая, что сумма всех индексов составляет около 2,7 Гб, я не понимаю, почемуMongoDB не может просто загрузить его в RAM, если это необходимо.Это нормальное поведение в этой ситуации и есть ли способы улучшить производительность?Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...