Использование @Indexed
обеспечивает при первом доступе к объекту, в котором созданы объявленные индексы. Spring Data MongoDB IndexOperations
вызывает createIndex(…)
. Обычно это не работает, если индекс существует с заданной спецификацией. Обычно применяется к приложениям, которые запускаются и работают довольно долго
AWS Lambda скорее очищает экземпляры, которые не используются для освобождения ресурсов. Я не уверен, как это влияет на производительность MongoDB, когда вы звоните, например, createIndex(…)
каждую минуту или около того. Если вы не видите негативного воздействия, то все может быть хорошо
Создание индекса в MongoDB подготавливает эксклюзивную блокировку (IX, намерение монопольной блокировки) и увеличивает эту блокировку во время создания индекса. Это может оказать влияние, если достаточные процессы попытаются вызвать createIndex(…)
.
Какие есть альтернативы?
- Сохранить постоянный экземпляр службы (что в некоторой степени противоречит AWS Lambda)
- Полностью удалить
@Indexed
и переместить создание индекса во внешний процесс (Создание индексов извне)
- Удалите
@Indexed
и создайте индексы программно (это рекомендуемый подход, обеспечивающий максимальную гибкость. Вы можете проверить, имеются ли требуемые индексы, и пропустить создание индекса).
Смотри также: