Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

オートコンパクト

項目一覧

  • 定義
  • 構文
  • 互換性
  • コマンドフィールド
  • 必要な特権
  • 動作
  • 詳細
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
ブール値

任意。 runOncetrueに設定されている場合、バックグラウンド圧縮はノード上のすべてのコレクションを通じて 1 回だけ実行されます。

runOncefalseに設定されている場合、バックグラウンド圧縮はデータベース内のすべてのコレクションに対して継続的に実行されます。 runOncefalseであるときにコレクションの圧縮に失敗した場合、 MongoDBはそのコレクションを一時的にスキップし、残りのコレクションの圧縮を続行します。 MongoDBは、失敗したコレクションを約 1 日後に再度圧縮しようとします。

認証 が強制されるクラスターの場合は、クラスターで 特権アクションが可能なユーザーとして 認証compact を受ける必要があります。hostManagerロールはautoCompactを実行中するために必要な特権を提供します。

autoCompactコマンド自体は読み取りと書込みをブロックしませんが、バックグラウンド圧縮はcompactコマンドと同じブロック動作を適用します。

さらに、バックグラウンド圧縮がアクティブなときにautoCompactを呼び出すと、 MongoDBはエラーを返します。 autoCompactを再起動する必要がある場合、または別のオプションを使用して再度実行する必要がある場合は、まず現在のバックグラウンド圧縮操作を停止する必要があります。

db.runCommand( { autoCompact: false } )

現在のバックグラウンド圧縮が無効になったら、新しい構成でautoCompactを再起動できます。

oplogが存在する場合、 MongoDBはそれをバックグラウンド圧縮から除外します。

トラフィックが少ない期間中にautoCompactを実行中ことをお勧めします。

圧縮は定期的にデータベースをチェックポイントしますが、これは同期のオーバーヘッドにつながる場合があります。トラフィックの多いデータベースでは、バックアップの取得などの運用タスクが遅れたり、妨げられたりする可能性があります。予期せぬ混乱を避けるため、バックアップを取る前に圧縮を無効にしてください。

レプリカセットに保存されているコレクションとインデックスに対して、バックグラウンド圧縮を実行できます。 ただし、次の考慮事項に注意してください。

  • プライマリノードは、セカンダリ ノードにautoCompactコマンドを複製しません。

  • バックグラウンド圧縮が実行中中にセカンダリノードがデータを複製できます。

  • バックグラウンド圧縮の実行中中、読み取りと書込みが許可されます。

autoCompactmongodインスタンスにのみ適用されます。 シャーディングされた環境では、各シャードでautoCompactを個別に実行します。

mongosインスタンスに対してautoCompactを実行することはできません。

戻る

管理