元ドキュメント: レプリカマイグレーション性能最適化
レプリカ移行の最適化
概要
ノード追加やスケーリング時のレプリカ移行パフォーマンスを大幅に向上させる最適化技術です。SST ファイルの境界を Region 境界にアラインメントすることで、スナップショット転送とログ再生を高速化します。
従来の移行プロセスと課題
従来の移行方式では、以下の 4 つのフェーズでそれぞれパフォーマンスのボトルネックが存在します。
| フェーズ | 処理内容 | 課題 |
|---|---|---|
| データ抽出 | Leader の LSM-Tree から特定キー範囲のデータを走査・抽出 | 複数のレベルと SST ファイルを走査するため I/O オーバーヘッドが大きい |
| データ転送 | KV データをアイテム単位で転送 | 転送効率が低く、ネットワーク帯域の利用率が低い |
| データ書き込み | ターゲット側で外部 SST ファイルを作成し LSM-Tree に Ingest | ローカルファイルとの統合が必要で、追加の Compaction オーバーヘッドが発生 |
| レプリカ削除 | 不要データの削除のため SST ファイルを走査 | I/O オーバーヘッドが大きい |

最適化方式: SST ファイル境界のアラインメント
実装メカニズム
バックグラウンドの Compaction プロセスで SST パーティショナー モジュールを呼び出し、以下の処理を行います。
- 過大な SST ファイルを Region 境界に基づいて分割
- 単一の SST ファイルが単一の Region のデータのみを含むよう保証
- 異なる Region のデータが同一 SST ファイルに混在することを防止
最適化後の移行プロセス
- ファイルの直接特定: データを走査することなく、Region に対応する SST ファイルを直接特定
- ファイル単位の転送: 圧縮済み SST ファイルをそのままターゲット側に転送
- 直接 Ingest: ターゲット側で複雑な圧縮/統合操作なしにデータを直接取り込み
移行前に、未整列の L0 データを L1 レベルまで Compaction します。L0 のデータ量は限定的であるため、このオーバーヘッドは許容範囲です。

パフォーマンス改善効果
主な改善点
- Compaction 関連の I/O オーバーヘッドの削減
- レプリカ移行およびフルバックアップのパフォーマンス向上
- 範囲指定の物理削除のパフォーマンス向上
- Bulk Load 機能の技術的基盤を提供
ベンチマーク(RepGroup あたり 20 GB データ転送)
| 方式 | 転送速度 | 備考 |
|---|---|---|
| 最適化前(ストリーム RPC 経由の KV 転送) | 22.6 MB/s | 従来の方式 |
| 最適化後(ローカル SST の直接送信) | 455.1 MB/s | 約 20 倍 の高速化 |