定義
autoCompactバージョン8.0の新機能。
バックグラウンド圧縮を有効または無効にします。 有効にすると、
autoCompactは利用可能なすべてのファイルを定期的に反復処理し、ストレージに十分な空き容量がある場合は圧縮を継続的に実行します。autoCompactを有効にする前に、$collStatsオプションを使用してstorageStats: {}集計ステージを実行し、圧縮を続行するのに十分なストレージ容量があるかどうかを確認します。freeStorageSizeによって返される使用可能な領域の量がfreeSpaceTargetMB未満の場合、バックグラウンド圧縮は効果がありません。
構文
このコマンドの構文は、次のとおりです。
db.runCommand( { autoCompact: <boolean>, freeSpaceTargetMB: <int>, // Optional runOnce: <boolean>, // Optional } )
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
重要
このコマンドは、M0 および Flex クラスターではサポートされていません。詳細については、「 サポートされていないコマンド 」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
コマンドフィールド
コマンドは以下の任意フィールドを取ることができます。
フィールド | タイプ | 説明 |
|---|---|---|
| 整数 | 任意。 圧縮を続行するために回復可能な必要があるストレージ領域の最小量をメガバイト単位で指定します。 デフォルト:20 |
| ブール値 | 任意。
|
必要な特権
MongoDB Atlas: ユーザーには
autoCompact組み込みロールが必要です。自己管理型配置: ユーザーはクラスターに対する
compact特権アクションを持っている必要があります。 ロールはhostManagerautoCompactを実行中ために必要な特権を提供します。
動作
ブロッキング
autoCompactコマンド自体は読み取りと書込みをブロックしませんが、バックグラウンド圧縮はcompactコマンドと同じブロック動作を適用します。
さらに、バックグラウンド圧縮がアクティブなときにautoCompactを呼び出すと、 MongoDBはエラーを返します。 autoCompactを再起動する必要がある場合、または別のオプションを使用して再度実行する必要がある場合は、まず現在のバックグラウンド圧縮操作を停止する必要があります。
db.runCommand( { autoCompact: false } )
現在のバックグラウンド圧縮が無効になったら、新しい構成でautoCompactを再起動できます。
除外されたコレクション
oplogが存在する場合、 MongoDBはそれをバックグラウンド圧縮から除外します。
パフォーマンスに関する考慮事項
トラフィックが少ない期間中にautoCompactを実行中ことをお勧めします。
圧縮は定期的にデータベースをチェックポイントしますが、これは同期のオーバーヘッドにつながる場合があります。トラフィックの多いデータベースでは、バックアップの取得などの運用タスクが遅れたり、妨げられたりする可能性があります。予期せぬ混乱を避けるため、バックアップを取る前に圧縮を無効にしてください。
レプリカセット
レプリカセットに保存されているコレクションとインデックスに対して、バックグラウンド圧縮を実行できます。 ただし、次の考慮事項に注意してください。
プライマリノードは、セカンダリ ノードに
autoCompactコマンドを複製しません。バックグラウンド圧縮が実行中中にセカンダリノードがデータを複製できます。
バックグラウンド圧縮の実行中中、読み取りと書込みが許可されます。
シャーディングされたクラスター
autoCompact はmongodインスタンスにのみ適用されます。 シャーディングされた環境では、各シャードでautoCompactを個別に実行します。
mongosインスタンスに対してautoCompactを実行することはできません。