コンパクションは次のように動作します。
データベースのコンパクションでは、新しいファイルは、既存のすべてのアクティブなデータベース情報が保存されている場所に作成されます。
ビューのコンパクションでは、新しいインデックスファイルはアクティブな各デザインドキュメントごとに、アクティブなインデックス情報が保存されている場所に作成されます。
コンパクションプロセス中でも、既存のデータベースファイルは残り、情報を格納し、インデックスデータを更新するために使用され続けます。このプロセスは、コンパクション中もデータベースを使用できることを保証しています。
コンパクションが完了すると、古いデータベースは無効なり、書き込みやアップデートは、新しく作成されたデータベースファイルで継続されます。
古いデータベースとインデックスファイルは、その後、システムから削除されます。
このプロセスのため、コンパクションプロセスでは以下のことに注意する必要があります:
Couchbaseサーバが実行されている間、コンパクションは、バックグラウンド・プロセスとして行われます。シャットダウンしたり、データベース操作を一時停止する必要もなく、データベースが稼動しているので、クライアントはアクセスし、リクエストを送信し続けることができます。
コンパクションは、Couchbase Serverクラスタ内の単一のサーバ上のみで動作します。クラスタ内の各ノード、各データベースでコンパクションを実行する必要があります。
コンパクションは、ディスクとCPU両方に対して負荷がかかる処理です。非常に激しい書込み要求を処理するデータベースをコンパクションする場合は、ピークタイムを避けるべきです。オートコンパクションでは、実行時間を指定し、スケジュールすることができます。
巨大で多忙なデータベースのコンパクションには非常に時間がかかるため、データベースがアクティブな間はコンパクションが正常に完了しないこともあります。極端な例を上げると、コンパクションのプロセスがデータベースの変更に追いつかず、最終的にすべてのディスク領域を使用してしまう場合などです。
コンパクションは、この問題を防ぐために、オフピーク時に実行すべきです。
コンパクションプロセスは、停止したり再開することができます。ただし、コンパクションプロセスが停止してから、データベースが更新され、その後コンパクションを再開すると、更新されたデータベースは完全にコンパクションされていない場合ががあることに注意してください。コンパクションを停止し、再開する前に処理されたデータベースファイルの一部は、すでに変更されているためです。
コンパクションは、新しいファイルを生成したり、情報を更新することで実行されるため、コンパクションを実行するために、現在のデータベースとインデックスファイルの2倍程度のディスク領域が必要となる場合があります。
コンパクション中の変更も更新データファイルに書き込む必要があるため、フラグメントレベル、無効化されたデータの量、そしてデータベースの活動状況に応じて必要とされているディスク領域の正確な量を留意しておくことは重要です。
コンパクションが行われる前に、ディスク領域がチェックされ、使用可能なディスク領域が現在のデータベースサイズの2倍未満であれば、コンパクションは行われず、警告がログに出力されます。「 ログ 」を参照してください。
自動コンパクションを利用すると、自動的にデータベース上のコンパクションプロセスが開始されます
コンパクションの活動状況はCouchbase Serverのログに報告されます。コンパクション操作と実行時間を示す次のようなエントリが表示されます:
Service couchbase_compaction_daemon exited on node 'ns_1@127.0.0.1' in 0.00s (repeated 1 times)
ログにアクセスする方法については、「 ログ 」を参照してください。