Parse-Server исходные запросы _rperm и _wperm mongo, и мне их индексировать? - PullRequest
0 голосов
/ 15 мая 2018

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

Я обнаружил, что у меня есть несколько ключей _wperm и _rperm. Я вижу, что так ACL ломается. Но какой тип вызова Parse.Query может создать такой запрос в журналах?

query: { orderby: {}, $query: { _rperm: { $in: [ null, "*", "[UserId]" ] } } }

Я даже замечаю, что этот запрос относится к классу, который имеет всего 8 объектов, но для его завершения требуется 133 мс, что кажется очень медленным для такого маленького класса, даже если он должен был выполнить сортировку в памяти и сканирования.

Должен ли я решить эту проблему на уровне кода, изменив свой запрос, чтобы избежать этого типа запроса монго? Или я должен добавить индекс для этих типов запросов?

Я заметил, что у меня также есть несколько, которые появляются во вкладке Slow Queries на mLab Запрос выглядит как {"_id":"<val>","_wperm":{"$in":["<vals>"]}}, с предложенным индексом {"_id": 1, "_wperm": 1}, но имеет следующее примечание:

"_ id" находится в существующем уникальном индексе {"_id": 1}. Следующая рекомендация по индексам должна быть необходима только при определенных обстоятельствах.

Тем не менее, это один из моих более медленных запросов, выполнение которого занимает 320 мс. Это в классе _User. Это потому, что в классе _User много строк? Поскольку _id является уникальным, я чувствую, что добавление индекса _wperm на самом деле не должно иметь никакого значения, поскольку в итоге я получаю только один объект.

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

1 Ответ

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

Вы должны индексировать свои коллекции, следуя рекомендациям mongodb.В старые добрые времена parse.com эти индексы создавались автоматически на основе видимых рабочих нагрузок.Теперь вам нужно их создать.Оба имеют смысл._Rperm будет срабатывать при каждом выполнении запросов без masterKey._Wperm в каждой записи.В будущем мы можем автоматически создать индекс _id + _wperm, поскольку все записи используют этот индекс

...