Как Parse выбирает какой индекс Монго использовать? - PullRequest
0 голосов
/ 03 мая 2018

Я только что унаследовал проект Parse, который использует Mongo, поэтому я провожу кучу исследований по Mongo и индексам.

Я захожу в MLab и замечаю, что есть несколько индексов, которые были написаны до меня инженерами, многие из которых кажутся избыточными.

Итак, несколько вопросов:

  1. Как Parse (или Mongo) выбирает, какой индекс использовать, чтобы сделать запрос наиболее эффективным (и я должен удалить кучу из них, так как они кажутся избыточными)?
  2. Я создал индекс, на который я указываю на изображении ниже, с именем keywordIndexedListings. Есть ли способ специально искать с этим именованным индексом? В документах я не нашел ничего, что говорило бы, что я могу.

enter image description here

1 Ответ

0 голосов
/ 03 мая 2018

TL; DR : я не знаю, как заставить Parse выбрать индекс, но вы должны использовать функцию explain() Mongo для измерения производительности и использования индекса, а затем удалить неоптимальные, которые интенсивно используются. Кроме того, используйте отличную команду поддержки MLab для конкретных вопросов оптимизации.

Насколько я знаю, нет никакого способа сделать Mongo hint() с помощью Parse.

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

Вот некоторая информация о измерении индекса использования , но сложная часть заключается в преобразовании ваших запросов синтаксического анализа в монго-запросы, чтобы вы могли их протестировать.

Самый простой способ, который я нашел, это использовать триггер beforeFind в облачном коде. Когда я пытаюсь перевести запрос, console.log() здесь, а затем переписать его на запрос монго, как правило, довольно просто.

После того, как у вас есть запрос mongo, вы можете выполнить объяснения по нему и посмотреть, какие индексы используются, и это может сообщить вашим решениям, какие индексы удалить / сохранить.

Кроме поддержания чистоты корабля с вашими индексами (т. Е. Без субоптимальных / избыточных), я не уверен, что вы многое можете сделать, чтобы убедиться, что используется правильный. Кроме того, если у вас есть платный план MLab, его поддержка очень полезна и может помочь разобраться в особенностях вашей работы с БД и дать советы о том, как оптимизировать ваши индексы. Обязательно обращайтесь к ним с конкретными вопросами по индексам - они очень помогли мне в прошлом.

...