MongoDB: чтение / запись в базу данных одновременно? - PullRequest
5 голосов
/ 20 октября 2011

Что происходит, когда миллионы потоков пытаются одновременно read from и write to MongoDB? блокировка происходит на db-level, table-level or row-level?

Ответы [ 2 ]

3 голосов
/ 20 октября 2011

Это происходит на уровне базы данных, однако в Mongo 2.0 существует несколько методов параллелизма, таких как вставка / обновление с помощью поля _id.

1 голос
/ 20 октября 2011

Вы можете столкнуться с проблемами параллелизма, особенно если вы работаете с одним экземпляром MongoDB, а не с изолированным кластером.Скорее всего, потоки начнут блокировать друг друга, ожидая завершения операций записи и других операций и снятия блокировок.

Блокировка в MongoDB происходит на глобальном уровне экземпляра, но некоторые операции, начиная с версии 2.0, приведут ких блокировки (обновление по _id, удаление, длинная итерация курсора).Блокировка на уровне коллекции, вероятно, будет добавлена ​​в ближайшее время.

Если вам необходимо иметь большое количество потоков, обращающихся к MongoDB, рассмотрите возможность размещения очереди впереди, чтобы поглотить влияние конкуренции за параллелизм, а затем выполните операции с очередями.последовательно из одного потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...