#mongodb #nosql
#mongodb #nosql
Вопрос:
Что происходит, когда миллионы потоков пытаются read from
одновременно и write to
MongoDB
одновременно? происходит ли блокировка на a db-level, table-level or row-level
?
Ответ №1:
Это происходит на уровне базы данных, однако в Mongo 2.0 есть несколько методов параллелизма, таких как вставка / обновление с помощью поля _id .
Ответ №2:
Вы можете столкнуться с проблемами параллелизма, особенно если вы работаете с одним экземпляром MongoDB, а не с разделенным кластером. Потоки, вероятно, начнут блокировать друг друга, ожидая завершения операций записи и других операций и снятия блокировок.
Блокировка в MongoDB происходит на глобальном уровне экземпляра, но некоторые операции, начиная с версии 2.0, приведут к их блокировкам (обновление по _id, удаление, итерация с длинным курсором). Вероятно, в ближайшее время будет добавлена блокировка на уровне коллекции.
Если вам нужно иметь большое количество потоков, обращающихся к MongoDB, рассмотрите возможность размещения очереди впереди, чтобы поглотить влияние конкуренции параллелизма, затем последовательно выполняйте операции в очереди из одного потока.