メジャーコンパクションは、すべての動的データと静的データをマージするため、時間がかかります。ベストプラクティスによると、メジャーコンパクションは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はクラスタインスタンスレベルおよびテナントレベルでメジャーコンパクションを開始することをサポートしています。
- インスタンスの**概要**ページでは、対象クラスタインスタンスの下にあるすべてのテナントのメジャーコンパクションを開始できます。また、テナントの**概要**ページでは、対象テナントのメジャーコンパクションを開始できます。
ポップアップダイアログで、**データをコンパクション**をクリックして操作を確認します。
説明
- 現在バックアップタスクが実行中の場合、メジャーコンパクションによりその実行が遅延する可能性があります。
- メジャーコンパクションはデータベースのパフォーマンスに一定の影響を与える可能性があるため、業務のピーク時間帯を避けて実行することを推奨します。
- この操作では、当該クラスタインスタンス配下のすべてのテナントデータを同時にマージします。