#mongodb #aggregation-framework
#mongodb #платформа агрегации
Вопрос:
Допустим, у меня в документе 50 полей.
Когда я использую проекцию и просто выбираю 4 поля, увеличивается или уменьшается время выполнения?
Как mongodb справляется с этим?
- mongodb извлекает документ, затем фильтрует поля и возвращает?
- mongodb извлекает выбранные поля вместо всего документа и возвращает?
- Работает ли это по-другому для
find
иaggregate
?
Я считаю, что 1-й вариант увеличит время выполнения, а 2-й вариант уменьшит его.
Ответ №1:
ну, я думаю, все зависит… зависит от ваших критериев поиска. На мой взгляд, это может быть только точка 1 (или она должна быть сильно оптимизирована), поскольку любая фильтрация или агрегация или что-то еще может быть в полях, которых нет в проекции. и кстати …. определите «выборку». выборка для клиента, я бы сказал, нет, «выборка» на сервере да. В общем, я бы сказал, что, если ваши запросы не такие сложные, даже если проекция займет некоторое дополнительное время, она будет соответствовать общему времени передачи данных клиенту. В целом, здесь мы говорим о миллисекундах, а общее время передачи и задержки сложнее сократить, чем оптимизировать запросы к БД.
Кроме того, я нашел следующее (более техническое, чем мое мнение): https://dba.stackexchange.com/questions/198444/how-mongodb-projection-affects-performance
Комментарии:
1. Ну, пример касается только одного документа. Но когда в нем более 1000 документов, и вы используете лямбда-функции, и вы получаете огромное количество вызовов, эти миллисекунды имеют значение.
2. Под выборкой я подразумеваю этап выборки mongodb, на котором он извлекает документ и загружает его в свою память.
3. да, действительные точки / согласованы, но, как и во всем, вы можете создать правильную настройку, но вы также можете создать ту же настройку плохо (неправильные / нет индексов, нет пароля в общедоступном Интернете:), . трудно сказать (все может быть сделано неправильно). Как уже было сказано, я думаю, что прикрепленная ссылка дает более технический подход к тому, как вы можете извлечь выгоду из проекции и в каких случаях