Mongodb — Увеличивает ли проекция время выполнения?

#mongodb #aggregation-framework

#mongodb #платформа агрегации

Вопрос:

Допустим, у меня в документе 50 полей.

Когда я использую проекцию и просто выбираю 4 поля, увеличивается или уменьшается время выполнения?

Как mongodb справляется с этим?

  1. mongodb извлекает документ, затем фильтрует поля и возвращает?
  2. mongodb извлекает выбранные поля вместо всего документа и возвращает?
  3. Работает ли это по-другому для find и aggregate ?

Я считаю, что 1-й вариант увеличит время выполнения, а 2-й вариант уменьшит его.

Ответ №1:

ну, я думаю, все зависит… зависит от ваших критериев поиска. На мой взгляд, это может быть только точка 1 (или она должна быть сильно оптимизирована), поскольку любая фильтрация или агрегация или что-то еще может быть в полях, которых нет в проекции. и кстати …. определите «выборку». выборка для клиента, я бы сказал, нет, «выборка» на сервере да. В общем, я бы сказал, что, если ваши запросы не такие сложные, даже если проекция займет некоторое дополнительное время, она будет соответствовать общему времени передачи данных клиенту. В целом, здесь мы говорим о миллисекундах, а общее время передачи и задержки сложнее сократить, чем оптимизировать запросы к БД.

Кроме того, я нашел следующее (более техническое, чем мое мнение): https://dba.stackexchange.com/questions/198444/how-mongodb-projection-affects-performance

Комментарии:

1. Ну, пример касается только одного документа. Но когда в нем более 1000 документов, и вы используете лямбда-функции, и вы получаете огромное количество вызовов, эти миллисекунды имеют значение.

2. Под выборкой я подразумеваю этап выборки mongodb, на котором он извлекает документ и загружает его в свою память.

3. да, действительные точки / согласованы, но, как и во всем, вы можете создать правильную настройку, но вы также можете создать ту же настройку плохо (неправильные / нет индексов, нет пароля в общедоступном Интернете:), . трудно сказать (все может быть сделано неправильно). Как уже было сказано, я думаю, что прикрепленная ссылка дает более технический подход к тому, как вы можете извлечь выгоду из проекции и в каких случаях