Когда в память загружаются индексы mongodb? - PullRequest
2 голосов
/ 04 мая 2020

Я пытаюсь выяснить, когда индексы Mongodb загружаются в память. Предполагая, что у меня есть n коллекций и каждая имеет m индексов. Таким образом, когда mongodb запускается, все индексы nxm будут загружены в память?

Согласно документам, они упоминают, что, если индексы помещаются в ОЗУ, все они загружаются. Если нет, некоторые из них будут перенесены во вторичное хранилище. Но я не смог найти место, где они пояснили, что при запуске mongodb все индексы загружаются?

Это важно, потому что это позволило бы нам получить оценку того, сколько ОЗУ ожидать для БД. функционировать оптимально.

PS: я использую aws -documentdb, который, как я полагаю, должен иметь аналогичное поведение для индексов, поскольку они также нигде не затрагивали эту часть в своих документах.

1 Ответ

1 голос
/ 05 мая 2020

спасибо, что задали вопрос.

В большинстве баз данных, включая Amazon DocumentDB, страницы индекса выгружаются в память на основе запросов, выполняемых к базе данных (воспринимайте это как ленивую загрузку). При запуске буферный кеш пуст и заполнится страницами, поскольку ваша рабочая нагрузка выдает запросы к базе данных. Когда размер индекса (ов) настолько велик, что он не может поместиться в памяти, база данных должна очистить и прочитать с диска, чтобы перебрать индекс, чтобы иметь возможность ответить на запрос. То же самое касается страниц данных. В идеале вы хотите иметь достаточно оперативной памяти для своего экземпляра, чтобы и ваши страницы данных, и страницы индекса помещались в память. Чтение с диска добавит дополнительную задержку. Лучшее, что можно сделать здесь, - это запустить рабочую нагрузку, пока она не достигнет устойчивого состояния, а затем наблюдать BufferCacheHitRatio, чтобы увидеть, обслуживаются ли ваши запросы в основном из буферного кэша или вам нужно много читать с диска. Для получения дополнительной информации см .: https://docs.aws.amazon.com/documentdb/latest/developerguide/best_practices.html

...