OceanBaseデータベースの共有ストレージモードでは、全量データはコストの低いオブジェクトストレージに保存されます。頻繁にアクセスされる、または現在使用中のホットデータは可能な限りローカルストレージにキャッシュされ、業務クエリの高速化を図ります。ホットデータをキャッシュすることは、ストレージコストとデータベースパフォーマンスを最適化する方法です。デフォルトでは、システムはデータのアクセス頻度およびデータの生成時刻を考慮して、動的にホットデータ(アクセス頻度の高いデータ)をキャッシュし、コールドデータ(アクセス頻度の低いデータ)を淘汰します。しかし、クエリに敏感な業務においては、システムが自動的にコールド・ホットデータを識別する方法には予測不可能性があり、クエリ時にRTのジッターを引き起こす可能性があります。
時系列業務など、データに明確なコールド・ホットが存在する業務シナリオでは、カスタムホットデータキャッシュ戦略を定義することで、ユーザーは業務特性(例:時間的境界)に基づいて直接ホットデータの範囲を定義し、自動的なコールド・ホット識別の限界を克服し、パフォーマンスの予測可能性を向上させることができます。業務のホットデータを事前にローカルストレージにキャッシュすることで、クエリ時のRTジッターを回避します。
適用シナリオ
- 時間敏感性ビジネス:直近のデータのみを参照する必要があるビジネスなど。
- RT安定性要求の高いビジネス:頻繁にアクセスされる範囲内のデータクエリ遅延に敏感な場合。
ホットデータキャッシュメカニズム
データ属性タイプ:
HOT:データはホットデータであり、可能な限りローカルにキャッシュされます。ローカルストレージ容量に余裕がある場合、ホットデータはすべてローカルにキャッシュされます。AUTO:データのアクセス頻度に基づき、システムが自動的にデータのホット/コールドを識別し、動的にプリフェッチしてキャッシュします。NONE:上位エンティティ(例:主表)のホット/コールドキャッシュポリシーを継承します。例えば、部分インデックスのキャッシュポリシーがNONEの場合、主表のポリシーを動的に継承することを意味します。説明
ホットキャッシュポリシーが上位の
STORAGE_CACHE_POLICYの値に従う場合:- サブパーティションの上位はパーティションです。
- パーティションの上位はテーブルレベルです。
- インデックステーブルの上位は主表です。
優先順位メカニズム:
- ユーザーが指定したホットデータの優先順位は、自動的に識別されたホットデータよりも高いです。
ホットキャッシュポリシーのサポート状況
OceanBaseデータベースは、共有ストレージモードでSQLステートメントを通じてホットキャッシュポリシーをカスタマイズできます:
- テーブル(ユーザーテーブル/インデックステーブル)作成時に、テーブルレベルおよびパーティションレベルのホットキャッシュポリシー(
STORAGE_CACHE_POLICY)を指定する機能をサポートします。 - テーブル(ユーザーテーブル/インデックステーブル)のテーブルレベルおよびパーティションレベルのホットキャッシュポリシー(
STORAGE_CACHE_POLICY)を変更する機能をサポートします。
- テーブル(ユーザーテーブル/インデックステーブル)作成時に、テーブルレベルおよびパーティションレベルのホットキャッシュポリシー(
OceanBaseデータベースは、構成パラメータでグローバルなホットキャッシュポリシーを設定できます:
- デフォルトのキャッシュポリシー default_storage_cache_policyを設定します。
- ユーザー定義のホットキャッシュポリシー enable_manual_storage_cache_policyを有効にします。
- バックグラウンドキャッシュタスクを一時停止するかどうかを設定します suspend_storage_cache_task。
OceanBaseデータベースは、ビューでキャッシュポリシーを確認できます:
- 各テナントの現在のOBServerノード上の全体的なキャッシュ状況を表示します V$OB_TABLET_LOCAL_CACHE。
- 各テナントの現在のOBServerノード上のキャッシュタスク情報を表示します V$OB_STORAGE_CACHE_TASKS。