すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:ホットデータとコールドデータの階層化ストレージ

最終更新日:Mar 22, 2025

AnalyticDB for MySQL は、ホットデータとコールドデータの階層化ストレージをサポートしています。 ホットデータとコールドデータを異なるストレージメディアに移動することで、ホットデータの高いクエリパフォーマンスを確保し、コールドデータのストレージコストを削減できます。

概要

ビッグデータのシナリオでは、業務テーブルには、ログデータ、注文データ、モニタリングデータなど、大量の業務データが含まれる可能性があります。時間の経過とともに、特定のデータへのアクセス頻度は低下し、コールドデータとみなされます。ただし、コールドデータはストレージ容量を占有します。その結果、ストレージコストが増加します。

AnalyticDB for MySQL のホットデータとコールドデータの階層化ストレージは、日付と時間でパーティション化されたテーブルに適用できます。 AnalyticDB for MySQL クラスターは、指定されたホットパーティションの数とパーティションキーの値に基づいて、パーティションを降順にソートします。 最大 N 個のパーティションはホットパーティションとみなされ、その他のパーティションはコールドパーティションとみなされます。 コールドパーティションのデータは、ストレージコストを削減するために、低コストの Object Storage Service (OSS) に移動できます。 ホットパーティションのデータは SSD に残り、高いクエリパフォーマンスを確保します。

前提条件

AnalyticDB for MySQL クラスターでホットデータとコールドデータの階層化ストレージを使用する前に、次の要件が満たされていることを確認してください。

  • クラスターが Enterprise EditionBasic EditionData Lakehouse Edition、または エラスティックモードの Data Warehouse Edition であること。

課金ルール

クラスターを使用する場合、従量課金制に基づいてホットデータとコールドデータのストレージに対して課金されます。 詳細については、「料金」をご参照ください。

説明

ストレージプラン を使用して、AnalyticDB for MySQL のデータストレージコストを相殺できます。

ホットデータとコールドデータのストレージポリシー

AnalyticDB for MySQL は、コールドストレージ、ホットストレージ、混合ストレージの 3 つのホットデータとコールドデータのストレージポリシーを提供します。

  • コールドストレージは費用対効果の高いストレージポリシーです。 このストレージポリシーを使用する場合、すべてのデータは ゾーン冗長ストレージ (ZRS) モードで OSS に保存されます。

  • ホットストレージは、高アクセス パフォーマンス要件を満たすことができるストレージポリシーです。 このストレージポリシーを使用する場合、すべてのデータは SSD に保存されます。 このポリシーは最高のクエリパフォーマンスを提供しますが、最高のストレージコストが必要です。

  • 混合ストレージは、ホットパーティションを SSD に保存し、コールドパーティションを OSS に保存できるストレージポリシーです。 このポリシーは、ホットパーティションの高いクエリパフォーマンスを確保し、コールドパーティションのストレージコストを削減します。 次のセクションでは、混合ストレージポリシーの原則について説明します。

    混合ストレージポリシーを使用する場合は、ホットパーティションの数を指定する必要があります。 パーティションは、パーティションキーの値によって降順にソートされます。 ホットパーティションの数が N に設定されている場合、SSD に保存されている最初の N 個のパーティションはホットパーティションであり、OSS に保存されている他のパーティションはコールドパーティションです。 ホットパーティションとコールドパーティションの分布は、パーティションの数が変更されると変更される場合があります。 詳細については、このトピックの「パーティション数の変更がホットパーティションとコールドパーティションの分布に与える影響」セクションをご参照ください。

パーティション数の変更がホットパーティションとコールドパーティションの分布に与える影響

  • ホットパーティションの数が N であるとします。 新しいパーティションが挿入されると、すべてのパーティションが再ソートされ、N 個のホットパーティションのみが存在するようにします。

    図を表示するにはクリックしてください

    次の図に示すように、ホットパーティションの数は 5 に設定されており、新しいパーティション 20241226 がテーブルに挿入されます。 このパーティションは、テーブルのすべてのパーティションの中で最大のパーティションキー値を持っています。 BUILD ジョブの後、このパーティションはホットパーティションの中に配置する必要があります。 ホットパーティションの数が 5 であることを確認するために、システムはパーティションキー値が最小のパーティション 20241221 をホットパーティションからコールドパーティションに移動し、パーティション 20241226 をホットパーティションの中に配置します。

  • ホットパーティションの数が N であり、ホットパーティションの数を M に変更するとします。

    • M が N より大きい場合、M - N パーティションのデータはコールドパーティションからホットパーティションに移動されます。

      図を表示するにはクリックしてください

      次の図に示すように、ホットパーティションの数は 5 から 6 に変更されます。 このように、システムはパーティションキー値が最大のパーティション 20241220 をコールドパーティションからホットパーティションに移動します。

    • M が N より小さい場合、N - M パーティションのデータはホットパーティションからコールドパーティションに移動されます。

      図を表示するにはクリックしてください

      たとえば、ホットパーティションの数は 5 から 4 に変更されます。 このように、システムはパーティションキー値が最小のパーティション 20241221 をホットパーティションからコールドパーティションに移動します。

ホットデータとコールドデータのストレージポリシーを指定する

  • テーブルを作成する際に、storage_policy パラメーターを使用して、ホットデータとコールドデータのストレージポリシーを指定できます。

  • 既存のテーブルの場合、ALTER TABLE 文を実行することで、ホットデータとコールドデータのストレージポリシーを指定できます。

ホットデータとコールドデータのストレージポリシーをクエリする

構文

  • すべてのテーブルのホットデータとコールドデータのストレージポリシーをクエリします。

    SELECT * FROM information_schema.table_usage;
  • 特定のテーブルのホットデータとコールドデータのストレージポリシーをクエリします。

    SELECT * FROM information_schema.table_usage WHERE table_schema='<schema_name>' AND table_name='<table_name>';

レスポンスパラメーター

パラメーター

説明

table_schema

データベースの名前。

table_name

テーブルの名前。

storage_policy

ストレージポリシー。有効な値:

  • HOT

  • COLD

  • MIXED

hot_partition_count

ホットパーティションの数。

cold_partition_count

コールドパーティションの数。

rt_total_size

リアルタイムデータの合計サイズ。 rt_data_size パラメーターと rt_index_size パラメーターの合計です。単位: バイト。

rt_data_size

リアルタイムデータのサイズ。単位: バイト。

rt_index_size

リアルタイムデータのプライマリキーとインデックスデータのサイズ。単位: バイト。

hot_total_size

ホットパーティションのデータの合計サイズ。 hot_data_size パラメーターと hot_index_size パラメーターの合計です。単位: バイト。

hot_data_size

ホットパーティションのデータのサイズ。単位: バイト。

hot_index_size

ホットパーティションのプライマリキーとインデックスデータのサイズ。単位: バイト。

cold_total_size

コールドパーティションのデータの合計サイズ。 cold_data_size パラメーターと cold_index_size パラメーターの合計です。単位: バイト。

cold_data_size

コールドパーティションのデータのサイズ。単位: バイト。

cold_index_size

コールドパーティションのプライマリキーとインデックスデータのサイズ。単位: バイト。

注:

  • rt_total_sizert_data_sizert_index_sizehot_total_sizehot_data_sizehot_index_sizecold_total_sizecold_data_sizecold_index_size パラメーターの値は、INSERT、UPDATE、DELETE、BUILD 文の実行によって異なります。

  • データを書き込んだ後、hot_total_size パラメーターと cold_total_size パラメーターの値が両方とも 0 の場合、データはリアルタイムで同期されます。 rt_total_size パラメーターは、リアルタイムデータのサイズを示します。 BUILD 文を実行して、リアルタイムデータを既存データに変換できます。 BUILD ジョブが完了すると、hot_total_size パラメーターと cold_total_size パラメーターを表示できます。

  • 定義された hot_partition_count パラメーターは、単一シャード内のホットパーティションの数を指定しますが、クエリされた hot_partition_count パラメーターは、シャードが統合された後のホットパーティションの数を示します。 データパーティションがシャード全体で異なる方法で分散されている場合、クエリされた hot_partition_count パラメーターの値は、定義された hot_partition_count パラメーターの値よりも大きくなる可能性があります。

    たとえば、テーブル A にはシャード 1 とシャード 2 が含まれており、hot_partition_count は 2 に設定されています。次の図は、テーブル A のデータパーティションの分布を示しています。

    シャード 1: P4 と P5 はホットパーティションです。 P1、P2、P3 はコールドパーティションです。

    シャード 2: P3 と P4 はホットパーティションです。 P1 と P2 はコールドパーティションです。

    ホットパーティションの実際の数は、次の式を使用して計算されます。(P4, P5) UNION (P3, P4) = (P3, P4, P5)。 したがって、hot_partition_count パラメーターの実際の値は 3 です。

ホットデータとコールドデータのストレージポリシーの変更の進捗状況をクエリする

ALTER TABLE 文を実行してホットデータとコールドデータのストレージポリシーを変更した後、storage_policy_modify_progress テーブルからストレージポリシーの変更の進捗状況をクエリできます。

構文

  • すべてのテーブルのホットデータとコールドデータのストレージポリシーの変更の進捗状況をクエリします。

    SELECT * FROM information_schema.storage_policy_modify_progress;
  • 特定のテーブルのホットデータとコールドデータのストレージポリシーの変更の進捗状況をクエリします。

    SELECT * FROM information_schema.storage_policy_modify_progress WHERE table_schema='<schema_name>' AND table_name='<table_name>';

レスポンスパラメーター

パラメーター

説明

table_schema

データベースの名前。

table_name

テーブルの名前。

task_id

ストレージポリシー変更ジョブの ID。

source_storage_policy

元のストレージポリシー。有効な値:

  • HOT

  • COLD

  • MIXED

source_hot_partition_count

元のホットパーティションの数。

dest_storage_policy

新しいストレージポリシー。有効な値:

  • HOT

  • COLD

  • MIXED

dest_hot_partition_count

新しいホットパーティションの数。

hot_to_cold_partition_count

ホットパーティションからコールドパーティションに変更されたパーティションの数。

cold_to_hot_partition_count

コールドパーティションからホットパーティションに変更されたパーティションの数。

hot_to_cold_data_size

ホットパーティションからコールドパーティションに変更されたデータのサイズ。単位: バイト。

cold_to_hot_data_size

コールドパーティションからホットパーティションに変更されたデータのサイズ。単位: バイト。

hot_data_size_before_change

ストレージポリシーが変更される前のホットデータのサイズ。単位: バイト。

cold_data_size_before_change

ストレージポリシーが変更される前のコールドデータのサイズ。単位: バイト。

hot_data_size_after_change

ストレージポリシーが変更された後のホットデータのサイズ。単位: バイト。

cold_data_size_after_change

ストレージポリシーが変更された後のコールドデータのサイズ。単位: バイト。

start_time

ストレージポリシーが変更された時間範囲の開始。

update_time

ストレージポリシーが変更された時間範囲の終了。

progress

ストレージポリシーの変更の進捗状況。単位: %。

status

ストレージポリシーの変更ステータス。有効な値:

  • INIT: 変更は開始されていません。

  • RUNNING: 変更が進行中です。

  • FINISH: 変更が完了しました。