我使用 MongoDB 3.6 我的收藏中有大量碎片。一个集合 300+ GB。WiredTiger 是存储引擎。
我知道它对操作系统不利并且浪费了很多空间。如果我们使用 MMAP 引擎,这也会影响内存。但我不知道碎片如何影响WiredTiger?
我使用 MongoDB 3.6 我的收藏中有大量碎片。一个集合 300+ GB。WiredTiger 是存储引擎。
我知道它对操作系统不利并且浪费了很多空间。如果我们使用 MMAP 引擎,这也会影响内存。但我不知道碎片如何影响WiredTiger?
如果您有大量可重复使用的空间,则获取数据的效率会降低。但是,如果您继续在集合中插入或更新文档,则可以重复使用该空间。
如果您丢弃了大量数据(在您的某个集合中听起来像 ~300GB),您可以通过以下任一方式回收空间:
compact
命令(重要警告:这将阻止正在运行该操作的数据库的所有操作)对于任何一种方法,我都会使用滚动维护来保持可用性。
重新同步将是最有效的选择。该
compact
命令运行风险更大,因为副本集成员可能在compact
离线运行时变得陈旧(并且需要重新同步);此操作也可能无法像重新同步那样释放尽可能多的磁盘空间,并且需要在每个集合中运行。