Является ли db.stats() блокирующим вызовом для MongoDB?

Изучая, как проверить размер MongoDB, я нашел это комментарий:

Имейте в виду, что dbstats блокирует вашу базу данных во время ее работы, поэтому она не подходит для производства. https://jira.mongodb.org/browse/SERVER-5714

Глядя на связанный отчет об ошибке (который все еще открыт), он цитирует Документы Mongo говорят:

Выполнение команды занимает некоторое время, обычно несколько секунд, если только файл .ns не очень большой (с помощью --nssize). Во время работы другие операции могут быть заблокированы.

Однако, когда я проверяю текущую документацию Mongo, я не нахожу этот текст. Вместо этого они говорят:

Время, необходимое для запуска команды, зависит от общего размера базы данных. Поскольку команда должна затрагивать все файлы данных, выполнение команды может занять несколько секунд.

Для экземпляров MongoDB, использующих механизм хранения WiredTiger, после нечистого завершения работы статистика по размеру и количеству может отличаться на 1000 документов, как сообщают collStats, dbStats, count. Чтобы восстановить правильную статистику для коллекции, запустите проверку коллекции.

Означает ли это, что механизм хранения WiredTiger изменил вызов на неблокирующий, сохранив текущую статистику?


person Jeff Widman    schedule 11.04.2016    source источник


Ответы (1)


немного поздно в игре, но я нашел этот вопрос, ища ответ, и ответ: Да, до 3.6.12 / 4.0.5 он приобретал «общую» блокировку («R» ), которые блокируют все запросы на запись во время выполнения. После этого теперь это блокировка с общим намерением («r»), которая не блокирует запросы на запись. Запросы на чтение не были затронуты.

Источник: https://jira.mongodb.org/browse/SERVER-36437

person Adrien Jarthon    schedule 24.02.2020