MongoDB использует механизм хранения WiredTiger для обработки операций записи, а также использует 50% доступного кеша. Итак, я хочу понять, как wiredTiger использует кеш для записи данных. И почему по умолчанию требует 50% кеша? Если размер кэша уменьшить до 10-20%, насколько это повлияет на запись?
Как происходит запись в MongoDB?
Ответы (1)
Для MongoDB версии 3.2 WiredTiger является механизмом хранения по умолчанию.
WiredTiger выполняет блокировку на уровне документа. Это уменьшает блокировки. И это позволяет нам одновременно читать или обновлять несколько документов в коллекции.
Механизм хранения WiredTiger является значительным улучшением по сравнению с MMAPv1 в плане производительности и параллелизма. Он также предлагает преимущества сжатия и шифрования.
По умолчанию MongoDB резервирует 50 процентов доступной памяти для кэша данных WiredTiger. Размер этого кэша важен для обеспечения адекватной работы WiredTiger. Хорошее эмпирическое правило заключается в том, что размер кэша должен быть достаточно большим, чтобы вместить весь рабочий набор приложения.
db.serverStatus().wiredTiger.cache
Настроено wiredTiger.cache.maximum
байт: это максимальный размер кэша.
wiredTiger.cache.bytes
в настоящее время в кеше — это размер данных, находящихся в данный момент в кеше. Это значение не должно превышать установленное максимальное количество байтов.
wiredTiger.cache.tracked
грязных байтов в кеше — это размер грязных данных в кеше. Это значение должно быть меньше байтов, находящихся в настоящее время в значении кэша.
Глядя на эти значения, мы можем определить, нужно ли нам увеличивать размер кеша для нашего экземпляра. Кроме того, мы можем посмотреть на значение wiredTiger.cache.bytes
чтения в кэш для приложений с интенсивным чтением. Если это значение постоянно высокое, увеличение размера кэша может улучшить общую производительность чтения.