Блокирует ли MongoDB MapReduce базу данных? - PullRequest
10 голосов
/ 06 апреля 2011

Блокирует ли задание MongoDB MapReduce базу данных? Я занимаюсь разработкой многопользовательского веб-приложения MongoDB и беспокоюсь о многопользовательских конфликтах и ​​производительности. У кого-нибудь есть слова мудрости для меня?

Ответы [ 3 ]

7 голосов
/ 06 апреля 2011

Простой ответ? Иногда ...

Это во многом зависит от того, как вы используете карту / уменьшить ... но, по моему опыту, это никогда не было проблемой.

Не так много информации по этому поводу, но это четко указано в документах , что делает блокировку иногда , но это "Позволяет существенную параллельную работу. «

В группе пользователей mongodb есть пара вопросов , спрашивающих об этом ... лучший ответ, который я видел официально - это ... "в 1.4 даёт, но не так хорошо, как должно быть, в 1.5 это намного дружелюбнее к другим запросам. "

Это не означает, что вообще не блокирует , но по сравнению с db.eval (), который блокирует весь процесс mongod ... это ваша лучшая ставка.

Тем не менее, в 1.7.2 и выше теперь есть опция nolock для db.eval () ...

0 голосов
/ 23 августа 2012

В версии 2.1.0 добавлен флаг "nonAtomic" для опции вывода.

См .: https://jira.mongodb.org/browse/SERVER-2581

0 голосов
/ 06 апреля 2011

Нет, mapreduce не блокирует базу данных.См. примечание здесь , сразу после «Использование db.eval ()» (оно объясняет, почему mapreduce может быть более подходящим для использования, чем eval, потому что mapreduce не блокирует).

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

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