文档菜单
文档首页
/
MongoDB 手册
/ / /

autoCompact

本页

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

版本8.0.

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

在启用autoCompact之前,运行dbStats命令以查看是否有足够的可用存储空间进行压缩。如果dbStats返回的可用空间小于freeSpaceTargetMB,则后台压缩无效。

命令具有以下语法

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

此命令可在以下环境中部署

  • MongoDB企业版:MongoDB的基于订阅的自管理版本

  • MongoDB社区版: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

如果存在 操作日志,MongoDB 会将其从后台压缩中排除。

我们建议在低流量期间运行 autoCompact

压缩会定期将数据库检查点,这可能会导致同步开销。在高流量数据库中,这可能会延迟或阻止操作任务,如备份数据库。为了防止意外中断,在备份数据库之前请禁用压缩。

您可以对存储在副本集中的集合和索引运行后台压缩。但是请注意以下事项:

  • 主节点不会将 autoCompact 命令复制到从节点。

  • 从节点可以在后台压缩运行时复制数据。

  • 后台压缩运行时允许读取和写入。

autoCompact 仅适用于 mongod 实例。在分片环境中,请在每个分片上单独运行 autoCompact

您不能在 mongos 实例上运行 autoCompact

返回

管理