2016-08-29 2 views
0

У меня есть две коллекции, которые я делаю с картой, во временную коллекцию, назовем их коллекцией A и коллекцией B и коллекцией _queue. Пока я делаю сокращение карты, пользователи пытаются читать и писать в коллекцию A. Я получаю всевозможные блокировки и записи в очередь и чтения. Мне все равно, есть ли грязные чтения или записи, является ли способ читать и писать в коллекцию B и сделать ее неатомной? Спасибо заранее.Устранение блокировок базы данных в Mongo

+0

Обновление в Монго 3.2 адреса этих замков. –

ответ

0

В MongoDB нет способа указать что-либо в запросе относительно его политики блокировки.

Во-первых, вам нужно проверить, если время, чтобы получить блокировку действительно проблема (вы можете использовать MongoDB внутреннюю Profiler для этого: https://docs.mongodb.com/manual/administration/analyzing-mongodb-performance/#database-profiling)

Тогда, если вы не на последней версии MongoDB (или если вы обновляетесь до последнего, не меняя механизм хранения), вы можете переключиться на WiredTigger, который перемещается из блокировки по коллекции (для серии 3.x, pre-3.x MongoDB имеет блокировку по базе данных) до блокировки по документу , Поэтому, если вы используете WiredTiger и по-прежнему испытываете значительные задержки из-за конфликта блокировок, я не думаю, что вы можете что-то сделать.

Смотрите документацию WiredTiger здесь: https://docs.mongodb.com/manual/core/wiredtiger/

+0

Спасибо, я смотрю на модернизацию Mongo до 3.0+. –

+0

Обновление до Mongo 3.2 и с использованием WiredTiger будет решаться проблемой блокировки. – loicmathieu

Смежные вопросы