Я прочитал рекомендацию о том, что размер базы данных MongoDB должен быть не более чем в два раза больше оперативной памяти на сервере. Я попытался протестировать эту рекомендацию с использованием https://github.com/brianfrankcooper/YCSB,, но на данный момент похоже, что снижение производительности происходит ТОЛЬКО при загрузке в базу данных (записи), а не при операциях чтения.
На моем сервере 192 ГБ ОЗУ, поэтому я сравнил две базы данных:
- «Нормальный размер» загружен 300 000 000 объектов, что занимает 350 ГБ на диске.
- «Большой размер» загружен 1200 000 000 объектов, что занимает 1,4 ТБ на диске.
db.stats сообщает, что размер индекса для базы данных «нормального размера» составляет 20 ГБ, а для большой БД - 60 ГБ.
Потребовалось 2300 секунд для загрузки небольшой базы данных.
Из-за ограниченного объема памяти я ожидал, что загрузка базы данных «большого размера» займет более 4 раз. На самом деле загрузка базы данных «нормального размера» заняла 30310 секунд, что в 13 раз больше времени.
Я тестировал немногие - в соответствии с тестом YCSB:
При всей проверенной рабочей нагрузке и достоверности числа клиентских потоков считывание пропускной способности большой базы данных составляло +/- 10% от базы данных нормального размера.
Мои основные вопросы:
- Что-то не так с подходом, который я выбрал для этого теста?
- Каков фактически практический размер базы данных в соответствии с размером оперативной памяти на сервере?
- Есть ли какие-то настройки, которые я должен выполнить, чтобы повысить пропускную способность при загрузке данных в базу данных?