Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

autoCompact

在此页面上

  • 定义
  • 语法
  • 兼容性
  • 命令字段
  • 所需权限
  • 行为
  • 了解详情
autoCompact

8.0版本新增

启用或禁用背景压实。 启用后, autoCompact会定期遍历所有可用文件,并在有足够的可用存储空间时持续运行压实。

在启用autoCompact之前,运行dbStats命令以查看是否有足够的可用存储空间来继续压实。 如果dbStats返回的可用空间量小于freeSpaceTargetMB ,则背景压实不起作用。

该命令具有以下语法:

db.runCommand(
{
autoCompact: <boolean>,
freeSpaceTargetMB: <int>, // Optional
runOnce: <boolean>, // Optional
}
)

此命令可用于以下环境中托管的部署:

  • MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本

  • MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本

注意

MongoDB Atlas集群目前不支持此命令。

该命令可以采用以下可选字段:

字段
类型
说明

freeSpaceTargetMB

整型

可选。 指定要继续压实操作所必须恢复的最小存储空间量(以兆字节为单位)。

默认值:20

runOnce

布尔

可选。 如果将runOnce设立为true ,则背景压实仅对该节点上的每个集合运行一次。

如果将runOnce设立为false ,则将对数据库中的所有集合持续运行背景压实。 如果在runOncefalse时集合未能压缩, MongoDB会暂时跳过该集合并继续压缩剩余的集合。 MongoDB会在大约一天后再次尝试压缩失败的集合。

对于强制执行身份验证的集群,您必须以对集群具有compact权限动作的用户身份进行身份验证。 hostManager角色提供运行autoCompact所需的特权。

尽管autoCompact命令本身不会区块读取和写入,但背景压实会应用与compact命令相同的阻止行为。

此外,如果您在背景压实处于活动状态时调用autoCompact , MongoDB会返回错误。 如果需要重新启动autoCompact或使用不同选项再次运行,则必须首先停止当前的背景压实操作:

db.runCommand( { autoCompact: false } )

禁用当前背景压实后,您可以使用新配置重新启动autoCompact

如果oplog存在, MongoDB会将其排除在背景压实。

我们建议在流量较低时运行autoCompact

压实会定期对数据库设置检查点,这可能会导致同步开销。在高流量数据库上,这可能会产生延迟或阻止备份等操作任务。为避免意外中断,请在进行备份之前禁用压实。

您可以对存储在副本集的集合和索引运行背景压实。 但请注意以下事项:

  • 主节点 (primary node in the replica set)节点不会将autoCompact命令复制到从节点(secondary node from replica set)节点。

  • 节点从节点(secondary node from replica set)在背景压实运行时复制数据。

  • 背景压实运行时允许读取和写入。

autoCompact 仅适用于mongod实例。 在分分片的环境中,对每个分分片分别运行autoCompact

您无法针对mongos实例运行autoCompact

后退

管理