Мы обеспокоены тем, что в конце концов asList
cursor not found exceptions
для некоторых asList
Queries asList
и я обнаружил подсказку для SO, что это может быть довольно много памяти.
Теперь я хотел бы узнать немного больше об истории вопроса: может ли кто-нибудь объяснить (на английском языке), что на самом деле представляет собой Cursor (в MongoDB)? Почему его можно оставить открытым или не найти?
Документация определяет курсор как:
Указатель на набор результатов запроса. Клиенты могут перемещаться по курсору для получения результатов. По умолчанию время ожидания курсора после 10 минут бездействия
Но это не очень показательно. Может быть, было бы полезно определить batch
для результатов запроса, потому что в документации также говорится:
Сервер MongoDB возвращает результаты запроса в пакетном режиме. Размер пакета не будет превышать максимальный размер документа BSON. Для большинства запросов первая партия возвращает 101 документ или достаточно документов, превышающих 1 мегабайт. Размер последующей партии составляет 4 мегабайта. [...] Для запросов, которые включают операцию сортировки без индекса, сервер должен загрузить все документы в память, чтобы выполнить сортировку, прежде чем возвращать какие-либо результаты.
Примечание: в наших запросах мы вообще не используем операторы сортировки, но также не limit
и не offset
.