2013-09-28 4 views
0

Сегодня я работал над тестом на производительность с MongoDB. Как только мне удалось использовать все левое пространство моего жесткого диска, чтобы тест был остановлен посередине. Поэтому я удалил некоторые файлы и перезапустил тест после db.dropDatabase();. Но я заметил, что результаты db.collection.stats();, кажется, сейчас неправы.Как сбросить статистику сбора MongoDB?

Мой вопрос: как я могу сделать MongoDB сброс/пересчет статистики коллекции?

+0

Вы имеете в виду 'db.collection.stats()'? Каким образом статистика неверна? – JohnnyHK

+0

Честно говоря, я не уверен, что это неправильно, но моя тестовая база данных со 100-миллисекундными документами (каждая с двумя полями типа «int» и «date») имеет размер как «storageSize»: 8683839472' while его индекс равен «totalIndexSize»: 5769288112'. Было бы неплохо, если бы я мог убедиться в статистике, сбросив их. – Mehran

+0

В документах нет ничего, что подразумевало бы, что это не всегда актуально, поэтому эти значения верны. – JohnnyHK

ответ

0

Похоже, что mongodb сохраняет пространство для данных и индексы, которые он «знает» вам понадобится, когда вы снова запустите тест, хотя на данный момент данных нет.

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

+0

Файлы, которые я удалил, не были частью монго. Единственное пространство, которое я освободил от монго, я использовал с помощью 'dropDatabase'. – Mehran

+0

Хорошо удалять файлы базы данных рискованно, если вы не знаете, что находитесь в тестовой системе и можете позволить себе потерять данные. Если это так, вы можете удалить файлы данных mongodb (хранящиеся в/данные в установленной у меня установке) - не удалять установку mongo, если вам не нравится переустановка программного обеспечения. Если вы тестируете, полезно использовать виртуальную машину, чтобы каждый раз начинать с чистого состояния; если mongo экономит место для следующего прогона, это исказит ваши результаты. – kmorris

+0

, пожалуйста, не давайте советы людям удалять файлы, если только не удалите весь каталог/data/db. db.dropDatabase() - вполне адекватный способ избавиться от базы данных, не рискуя сломать что-либо. –

0

Я думаю, что вы ищете функцию db.collectionName.drop(), а затем переустановите свою коллекцию с помощью mongoimport --db dbName --collection collectionName --file fileName, чтобы узнать, правильны ли эти значения, быстро угадайте, правда, что они верны.

+0

db.dropDatabase() удаляет все коллекции в текущей базе данных, см. Http://docs.mongodb.org/manual/reference/method/db.dropDatabase/#db.dropDatabase – kmorris

+0

Сначала я попробовал 'db.collectionName .drop() ', но он не с ошибкой, говорящей о том, что« не может быть блокировки записи, когда хранилище заполнено »или что-то в этом роде. И я продолжал получать эту ошибку даже после того, как освободил 10% своего хранилища. Поэтому я решил использовать 'db.dropDatabase()'. – Mehran

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