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