2016-01-08 1 views
0

Я имею набор реплик включает в себя (1 первичные, вторичные и 1: 1) восстановление сервера, я выполняя следующие по первичному:MongoDB 3.0.4 Replica SET блокировка уровня базы данных при вставке, не в состоянии прочитать другую коллекцию?

  1. Все записи и чтения выполняются на и от первичной.
  2. Допустим, мы имеем одну базу данных, состоящую из 5 коллекций A, B, C, D и E

  3. Мы выполняем запись (импорт или upserting) на сбор А, так это будет влиять на другие коллекции? Как и mongodb разрешить операцию чтения для коллекции B и C одновременно?

  4. Или он выполнит блокировку записи на уровне базы данных, чтобы предотвратить также операцию чтения ?
  5. Элемент списка Проблема, которую я получаю в настоящее время есть, я пишу по коллекции A, это даст таймаутам другой READ операция, выполняющаяся в другой базе данных?

Просьба представить спецификацию с, например, было бы большим подспорьем ..

+0

Вы используете механизм хранения mmapv1 или wiredtiger? Транзакции MongoDB являются атомарными на уровне документа с движком для хранения тигра. Параллелизм варьируется в зависимости от механизма хранения. – harshavmb

+0

Механизм хранения: mmapv1 – Aayushi

+0

mmapv1 система хранения Мы используем – Aayushi

ответ

1

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

Таким образом, mongo должен блокировать базы данных, т. Е.., collection' и базу данных local, в то же время поддерживать согласованность базы данных и гарантировать, что операции записи являются атомарными, то есть, обновлять все или ничего.

Различные операции mongoDB содержат различные варианты замков. Я бы предложил вам перейти по ссылке ниже, чтобы иметь хорошее понимание механизма блокировки и параллелизма.

https://docs.mongodb.org/manual/faq/concurrency/#mgl-ref

Вы можете проверить состояние блокировок путем выдачи db.serverStatus().locks команды. Он рассказывает вам о различных типах замков, в которых ваш монгод включает в себя oplog.

+0

Спасибо за возвращение, я прошел через эту ссылку, я хочу подтвердить, если существует эксклюзивная блокировка на уровне базы данных, т.е. малая w (w), разрешает ли любая операция чтения этому db? В чем разница между малым w и капиталом W, например: «locks»: { «Global»: «w», «MMAPV1Journal»: «w», «База данных»: «w», «Коллекция»: "W" – Aayushi

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