Я прочитал сообщение Parse [1], которое вы можете запустить compact
чтобы сохранить размер индекса в MongoDB.
Наш общий размер индекса составляет 10 ГБ, а общая память - 12 ГБ, поскольку вы, возможно, знаете, что MongoDB плохо работает, когда размер индекса близок к размеру памяти, поэтому мы попытались запустить compact
и уменьшил размер до 7 ГБ.
Однако через 1 неделю размер снова вырос до 10 ГБ, поэтому в настоящее время у нас есть задание по расписанию для запуска compact
команды.
Я думаю, действительно ли это поможет, и почему индекс так быстро растет и стабилизируется, когда достигает 10 ГБ?
У Parse есть уникальная проблема - они не знают, как люди используют MongoDB, которые они предоставляют. Большинство людей, полагающихся на Parse как на вариант использования для управления своей MongoDB, в основном читают о том, как Parse пытается исправить плохое использование их клиентами.
При этом вы не всегда должны уплотняться. Фактически, если вам приходится сжимать регулярно, это означает, что вы используете MongoDB неэффективно. Причины, по которым ваш MongoDB может стать «дефрагментированным»:
Если вы регулярно удаляете документы, вам следует подумать об использовании TTL или ограниченных коллекций.
Если вы обновляете документы и увеличиваете документ (т. Е. Постоянно расширяете массив), вам следует рассмотреть возможность изменения схемы, чтобы ограничить неограниченный рост документа. Или вы можете рассмотреть возможность добавления отступов в качестве заполнителей для будущих обновлений.
В любом случае, если вам приходится сжимать регулярно и часто, это является признаком неправильного использования MongoDB, и вам следует подумать о перепроектировании вашей схемы. Сжатие - это блокирующие команды, и для выполнения данных размером больше нескольких гигабайт может потребоваться время.