Можем ли мы всегда использовать allowDiskUse: true в запросе агрегации MongoDB - PullRequest
0 голосов
/ 13 марта 2020

Стадии конвейера агрегации имеют ограничение в 100 МБ. Для обработки больших наборов данных allowDiskUse позволяет выполнять запись во временные файлы. Но есть ли у этого дополнительного дефекта? Если нет, почему по умолчанию установлено значение false?

1 Ответ

1 голос
/ 13 марта 2020

Если вы не получаете ошибку нехватки памяти на этапах агрегации, например, сортировку, вам не нужно использовать эту опцию.

Обратите внимание, что работа с данными в памяти намного быстрее, чем работа с данными на жестком диске. При передаче данных с жесткого диска операция агрегации должна поддерживать передачу данных между операцией, памятью и жестким диском.

Таким образом, по умолчанию опция allowDiskUse отключена (или установлена ​​на false). Эту опцию необходимо использовать только при необходимости - например, для операции сортировки требуется более 100 МБ ОЗУ, и возникла ошибка. Тогда вам придется использовать allowDiskUse:true, чтобы выполнить агрегацию без ошибок. В таком случае обратите внимание, что при использовании этой опции (установленной на true) операция агрегации будет медленнее.

Если ваша агрегация работает нормально и использование этой опции allowDiskUse:true не действует, так как Операция может эффективно использовать память (и агрегация игнорирует эту опцию).

...