Процесс построения индекса MongoDB & Почему создание индекса блокирует все действия базы данных - PullRequest
0 голосов
/ 13 марта 2020

Мне пришлось создать индексы для коллекции. Я создал его, но он затронул все запросы других коллекций в другой базе данных.

Из do c я прочитал, что создание индекса блокирует все блокировки чтения / записи во всех базах данных. В чем причина такого поведения mon go DB?

  • Блокировка этой коллекции - лучшая.
  • Блокировка этой базы данных допустима.
  • Блокировка всех баз данных сбивает меня с толку.

1 Ответ

1 голос
/ 13 марта 2020

Существует два способа построения индексов на MongoDB -

1) Foreground: если вы используете MongoDB версии <<code>4.2, все индексы по умолчанию являются сборкой Foreground, которая имеет улучшенная структура данных и быстрая обработка, но существенным недостатком будет то, что при построении индексов блокируются все операции с базой данных. Чего следует избегать на обычных серверах prod.

2) Предыстория: Таким образом, для всех версий ниже 4.2, чтобы преодолеть мошенничество с процессом переднего плана, блокирующим действия базы данных, есть опция {background :true} для создания индексов в фоновом режиме, здесь, в то время как MongoDB создает индексы, вы все равно можете выполнять чтение и запись, но минусами при таком подходе является то, что структура индекса наименее эффективна, а время построения индекса больше.

Для MongoDB v > = 4.2, создание индексов в фоновом режиме устарело, поэтому вы больше не можете указывать это и использовать преимущества фоновых индексов, поэтому MongoDB сама создает индексы в фоновом режиме, но в начале индекса будет блокировка определенной коллекции сборка и в конце сборки, отделяйте друг от друга в основном вы можете go вперед с вашими чтениями и записью, но каким-то образом будет «намеренная исключительная блокировка IX», которая будет периодически блокировать коллекцию, и после определенных этапов будет блокировка записи и тогда полный замок, который оштрафует союзник будет освобожден в конце. Но почему? Итак, чтобы воспользоваться преимуществами быстроты и лучшей структуры данных переднего плана + неблокирующий механизм фонового процесса сборки.

Ссылка: . createIndex () & процесс создания индекса

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