メジャーコンパクションは、すべての動的データと静的データをマージするため、時間がかかります。ベストプラクティスでは、1日に1回だけメジャーコンパクションを実行し、業務のオフピーク時にスケジュールする必要があります。本記事では、メジャーコンパクションの実行方法について説明します。
背景
OceanBaseデータベースのストレージエンジンはLSM-Treeアーキテクチャに基づいています。データは、静的なベースラインデータ(SSTableに格納)と動的な増分データ(MemTableに格納)に分かれています。SSTableは読み取り専用データで、ディスクに保存され、生成後は変更されません。MemTableは読み書き可能で、メモリに保存されます。挿入、更新、削除などのDML操作によって生成されるデータは、まずMemTableに書き込まれます。MemTableが一定のサイズに達すると、そのデータはベースラインデータとマージされ、ディスク上のSSTableに保存されます。詳細については、ストレージアーキテクチャの概要を参照してください。
MemTableが使用するメモリが指定されたしきい値を超えると、システムはそのデータをSSTableにフラッシュしてメモリ空間を解放します。このプロセスをダンプと呼びます。詳細については、ダンプを参照してください。
ダンプにより新しいSSTableが生成されます。ダンプの回数が指定されたしきい値を超えるか、業務のオフピーク時になると、システムはベースラインSSTableとダンプで生成された増分SSTableを1つのSSTableにマージします。このプロセスをメジャーコンパクションと呼びます。詳細については、メジャーコンパクションを参照してください。
OceanBase Cloudでは、以下の2つの方法でメジャーコンパクションを開始できます:
定時トリガー:手動でのスケジューリングは不要です。実際の業務負荷に応じて、システムが業務のオフピーク時に自動的にメジャーコンパクションを実行するよう設定できます。
手動トリガー:実際の業務ニーズに応じて、いつでもメジャーコンパクションを開始できます。
説明
メジャーコンパクションは業務パフォーマンスの低下を引き起こす可能性があります。業務の安定性を確保するため、業務のオフピーク時にこの操作を実行することを推奨します。
前提条件
メジャーコンパクションを開始する前に、クラスタインスタンスの下のテナント状態が「実行中」であることを確認してください。テナントが「実行中」状態にある場合にのみ、メジャーコンパクションを開始できます。
手順
OceanBase Cloudコンソールにログインします。左側のナビゲーションバーで、**インスタンス**をクリックします。
対象のクラスタインスタンス名をクリックし、インスタンスの概要ページに移動します。
概要ページで、操作 > **コンパクションを開始を選択します。このエントリはメジャーコンパクション**セクションにあります。
説明
- V4.xクラスタインスタンスの場合、OceanBase Cloudはクラスタインスタンスレベルおよびテナントレベルでメジャーコンパクションを開始することをサポートしています。
- インスタンスの**概要**ページでは、対象クラスタインスタンスの下のすべてのテナントに対してメジャーコンパクションを開始できます。また、テナントの**概要**ページで、対象テナントに対してメジャーコンパクションを開始することもできます。
ポップアップダイアログで、**データをコンパクション**をクリックして操作を確認します。
説明
- 現在バックアップタスクが実行中の場合、メジャーコンパクションによりその実行が遅延する可能性があります。
- メジャーコンパクションはデータベースのパフォーマンスに一定の影響を与える可能性があるため、業務のピーク時間帯を避けて実行することを推奨します。
- この操作は、クラスタインスタンス配下のすべてのテナントデータを同時にマージします。