今天我一直在与MongoDB一起进行性能测试。一旦我设法使用硬盘的所有剩余空间,测试就停在了中间位置。所以我删除了一些文件,并在db.dropDatabase();
之后重新开始测试。但我注意到db.collection.stats();
的结果现在似乎是错误的。如何重置MongoDB的收集统计信息?
我的问题是,我如何使MongoDB重置/重新计算集合的统计信息?
今天我一直在与MongoDB一起进行性能测试。一旦我设法使用硬盘的所有剩余空间,测试就停在了中间位置。所以我删除了一些文件,并在db.dropDatabase();
之后重新开始测试。但我注意到db.collection.stats();
的结果现在似乎是错误的。如何重置MongoDB的收集统计信息?
我的问题是,我如何使MongoDB重置/重新计算集合的统计信息?
像mongodb这样的声音为数据保留空间,并且在您再次运行测试时“知道”您需要的索引,即使此时没有数据。
你删除了哪些文件?如果你真的不需要这些数据,你可以停止mongod,并删除与数据库相对应的其他文件 - 但这仅仅是在测试环境中运行并且不共享你的数据库才是安全的。
我删除的文件不是mongo的一部分。我从mongo中释放的唯一空间是我使用'dropDatabase'。 – Mehran
好 - 删除数据库文件是有风险的,除非您知道您在测试系统上并且可以承受丢失数据。如果是这种情况,可以删除mongodb的数据文件(存储在我安装的/ data中) - 不要删除mongo安装,除非您喜欢重新安装软件。如果你正在测试,使用虚拟机是很有用的,所以你可以每次都从干净的状态开始;如果mongo为下次运行节省空间,它会扭曲你的结果。 – kmorris
请不要给人们建议删除文件,除非删除整个/ data/db目录。 db.dropDatabase()是摆脱数据库而不冒任何风险的完美适当方式。 –
我认为你正在寻找db.collectionName.drop()
函数,然后使用mongoimport --db dbName --collection collectionName --file fileName
重新导入你的集合来查看这些值是否正确,但很快就猜测它们是正确的。
你的意思是'db.collection.stats()'?统计数据是错误的? – JohnnyHK
老实说,我不确定它是否是错误的,但我的测试数据库有100M文件(每个文件都有两个字段,一个'int'和一个'date'类型)和''storageSize'一样大:8683839472'其索引是“totalIndexSize”:5769288112'。如果我可以通过重置统计数据来确保统计数据,那将会很好。 – Mehran
文档中没有任何内容暗示它并不总是最新的,所以这些值是正确的。 – JohnnyHK