Definição
autoCompactNovidades na versão 8.0.
Habilita ou desabilita acompactação de background . Quando ativado, o
autoCompactitera periodicamente por todos os arquivos disponíveis e executa continuamente a compactação se houver espaço de armazenamento livre suficiente disponível.Antes de ativar o
autoCompact, execute o estágio de agregação do$collStatscom a opçãostorageStats: {}para ver se você tem espaço de armazenamento disponível suficiente para que a compactação prossiga. Se a quantidade de espaço disponível retornada porfreeStorageSizefor menor quefreeSpaceTargetMB, a compactação do background não terá efeito.
Sintaxe
O comando tem a seguinte sintaxe:
db.runCommand( { autoCompact: <boolean>, freeSpaceTargetMB: <int>, // Optional runOnce: <boolean>, // Optional } )
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Importante
Esse comando não é suportado em clusters M0 e Flex. Para obter mais informações, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Campos de comando
O comando pode assumir os seguintes campos opcionais:
Campo | Tipo | Descrição |
|---|---|---|
| Inteiro | Opcional. Especifica a quantidade mínima de espaço de armazenamento, em megabytes, que deve ser recuperável para que a compactação continue. Padrão: 20 |
| booleano | Opcional. Se Se |
Privilégios necessários
Para clusters que aplicam autenticação:
MongoDB Atlas: os usuários devem ter a função
autoCompactintegrada.Sistemas autogerenciados: os usuários devem ter a
compactação de privilégio no cluster. AhostManagerfunção fornece os privilégios necessários paraautoCompactexecutar.
Comportamento
Bloqueio
Embora o comando autoCompact em si não bloqueie leituras e escritas, a compactação de background aplica o mesmo comportamento de bloqueio que o comando compact .
Além disso, o MongoDB retorna um erro se você chamar autoCompact enquanto a compactação de background estiver ativa. Se você precisar reiniciar o autoCompact ou executá-lo novamente com opções diferentes, primeiro interrompa a operação de compactação de background atual:
db.runCommand( { autoCompact: false } )
Depois que a compactação de plano de fundo atual estiver desativada, você poderá reiniciar autoCompact com a nova configuração.
Collections excluídas
Se houver um oplog , o MongoDB o excluirá da compactação em segundo plano.
Considerações de desempenho
Recomendamos executar autoCompact durante períodos de baixo tráfego.
A compactação verifica regularmente o banco de dados, o que pode levar à sobrecarga de sincronização. Em bancos de dados de alto tráfego, isso pode atrasar ou impedir tarefas operacionais, como fazer backups. Para evitar interrupções inesperadas, desative a compactação antes de fazer um backup.
Conjuntos de réplicas
Você pode executar a compactação em segundo plano em coleções e índices armazenados em um conjunto de réplicas. No entanto, observe as seguintes considerações:
O nó primário não replica o comando
autoCompactpara os nós secundários.Um nó secundário pode replicar dados enquanto a compactação do background está em execução.
Leituras e gravações são permitidas enquanto a compactação em segundo plano está em execução.
Clusters fragmentados
autoCompact aplica-se apenas a mongod instâncias. Em um ambiente fragmentado, execute autoCompact em cada shard separadamente.
Você não pode executar autoCompact em uma instância mongos .