Глобальная блокировка MongoDB: чтение и вставка большого количества данных одновременно - PullRequest
2 голосов
/ 02 апреля 2012

У меня есть единственная MongoDB, работающая для приложения rails 3 (с использованием mongoid-адаптера) в 64-битной системе Linux.Я делаю массовую загрузку 1,5 млн. Записей объемом около 2 ГБ данных.Я загружаю данные через вызовы rest в свое приложение, используя скрипт, который я написал (извлекает отдельную запись из входных файлов и вставляет ее в MongoDB по одному).Это будет работать нормально, если я оставлю все в покое и не буду запрашивать БД.

Однако во время одного процесса загрузки я запросил БД через свое приложение и попытался получить ВСЕ записи на данный момент в MongoDB (о700 000 в то время).Это привело к тайм-ауту для моего скрипта загрузки.

Вопрос в том, возможно ли, чтобы глобальная блокировка MongoDB остановила всю БД во время запроса при попытке вставить данные, что привело к тайм-ауту скрипта загрузки?Мне просто нужно знать, возможно ли это.Я думал, что глобальная блокировка для чтения / записи различна.

Я знаю, что точное время может отличаться для каждой системы и конфигурации, но я пытаюсь выяснить, возможна ли эта возможность, поэтому я могу подготовиться соответствующим образом кбудущее.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Прежде всего, если вы хотите иметь какой-то пакет для загрузки всех данных, вы можете определить монго-соединение, отличное от остальных операций.Таким образом, ваше приложение может иметь несколько объектов Mongo с разным определением времени ожидания.В Mongo 2.0 они улучшили блокировку и улучшат ее в mongo2.2 Но это всегда общая проблема, которая заключается в том, что некоторые операции чтения должны выполняться очень быстро, некоторые другие - медленнее чтения, а для записи вы можете иметь различные определения задержек.

0 голосов
/ 02 апреля 2012

Как и в большинстве систем, блокировка записи имеет приоритет над блокировкой чтения.

При глобальной блокировке у вас может быть один писатель или много читателей

Если у вас естьблокировка записи активна, блокировки чтения встанут в очередь.

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

...