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。