MongoDB: одновременны ли операции чтения / записи в базу данных?

#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, рассмотрите возможность размещения очереди впереди, чтобы поглотить влияние конкуренции параллелизма, затем последовательно выполняйте операции в очереди из одного потока.