2014-03-28 115 views
-2

我将一个分片的maxsize设置为20GB并每天保留删除数据。但我看到这个碎片的storageSize中的一个分辨率大约为18G,但其磁盘上的数据文件大约为33GB,并且它不断增长。我知道mongo只是标记删除的数据,但它是否应该重用该空​​间?或者我需要配置一些东西?为什么mongodb不使用已删除的数据空间?

+1

你知道吗mongo为你预分配一些磁盘空间? –

+0

http://stackoverflow.com/questions/4555938/auto-compact-the-deleted-space-in-mongodb/4560096#4560096 –

回答

1

我不会在您的数据库上运行repair,只要您想恢复空间;这会对一个人造成灾难性的性能问题。

您遇到的问题是文档不适合您已删除存储区列表中的空间(参考这是一个很好的演示文稿:http://www.mongodb.com/presentations/storage-engine-internals它将解释我所谈论的一切),并且由于MongoDB用完的“蒸汽”搜索您的列表之前,它使一个全新的文件,你很可能得到一个新的范围,你插入/更新每个文件。

您可以运行compact,但在性能方面与repair一样差,但它会将这些删除空间发送到可供任何大小文档使用的空闲列表。

你也可以使用powerof2sizes:http://docs.mongodb.org/manual/reference/command/collMod/#usePowerOf2Sizes来解决你的问题。

理想情况下,您需要重做您的应用程序,您低估了就地更新/插入到MongoDB的工作方式,现在它正在屠杀您。

+0

谢谢!!!!!! – bbgasj

相关问题