MongoDB обрабатывает одновременный доступ с помощью движка хранения WiredTiger, который применяет оптимистичную блокировку на уровне документа. Это означает, что множество операций могут выполняться одновременно, а конфликты разрешаются только когда они возникают — это минимизирует ненужные блокировки.
MongoDB использует MVCC для эффективного управления операциями чтения и записи. Каждая операция чтения видит согласованный снимок данных в определённый момент времени, что означает:
MongoDB использует intent locks на уровне базы данных и коллекции для координации доступа. Эти блокировки сигнализируют о типе планируемой операции перед её началом:
IS — Intent Shared (чтение)IX — Intent Exclusive (запись)Такой иерархический подход позволяет MongoDB эффективно управлять конкуренцией без блокировки коллекций целиком.
Для операций, охватывающих несколько документов или коллекций, MongoDB поддерживает двухфазную блокировку (2PL):
Это гарантирует соответствие ACID для транзакций с несколькими документами, обеспечивая атомарность, согласованность, изоляцию и надёжность.
Модель конкурентности MongoDB разработана для максимизации пропускной способности за счёт минимально возможной гранулярности блокировок — по умолчанию используется блокировка на уровне документа для одиночных операций, и только транзакции при необходимости переходят к более строгим блокировкам.
Оптимистичная блокировка MongoDB на уровне документа позволяет нескольким операциям выполняться одновременно, с разрешением конфликтов только когда они возникают, а не с предварительным ограничением доступа.
Новый — ещё не проверен сообществом
Вы