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

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

最終更新日:May 14, 2026

AnalyticDB for MySQL では、ホットデータを SSD に、コールドデータを Object Storage Service (OSS) にそれぞれ格納することで、重要なクエリに対して高速なパフォーマンスを実現しつつ、ストレージコストを抑えることができます。

重要

階層型ストレージは、日付または時刻でパーティション分割されたテーブルにのみ適用されます。クラスターはマイナーバージョン 3.1.3.3 以降である必要があり、かつ以下のいずれかのエディションである必要があります:Enterprise Edition、Basic Edition、Data Lakehouse Edition、または Data Warehouse Edition Elastic mode。マイナーバージョンを確認または更新するには、AnalyticDB for MySQL コンソール にログインし、クラスター情報 ページの 設定情報 セクションをご確認ください。

ストレージポリシーの選択

AnalyticDB for MySQL では、次の 3 種類のストレージポリシーを提供しています。ワークロードに適したポリシーを以下の表から選択してください。

ストレージポリシー データの保存先 推奨用途 コスト
ホットストレージ すべてのデータを SSD に格納 頻繁にクエリされ、レイテンシ要件が厳しいテーブル 最高
コールドストレージ すべてのデータを OSS(ゾーン冗長ストレージ、ZRS)に格納 アーカイブ用で、ほとんどアクセスされないデータ 最低
混合ストレージ ホットパーティションを SSD に、コールドパーティションを OSS に格納 最新のデータがアクティブで古いデータがほとんどクエリされない大規模な時系列パーティションテーブル 中程度

ポリシーの選択:

  • クエリレイテンシが重大であり、データの大部分を定期的にアクセスする場合は、ホットストレージ を使用します。

  • アーカイブ目的で、ほぼクエリしないデータには、コールドストレージ を使用します。

  • ログテーブル、注文履歴、モニタリングデータなどの時系列ワークロードには、混合ストレージ を使用します。これは、大規模なパーティションテーブルにおいて最も一般的な選択肢です。

混合ストレージの仕組み

混合ストレージを選択すると、ホットパーティション数(N)を指定します。AnalyticDB for MySQL は、すべてのパーティションをパーティションキー値の降順でソートし、上位 N 個のパーティションを SSD 上のホットパーティションとして、残りを OSS 上のコールドパーティションとして格納します。

パーティションが追加された場合やホットパーティション数が変更された場合、システムは自動的に再ソートおよびデータ移行を行い、正しい分布を維持します。詳細については、「パーティション数変更の影響」をご参照ください。

ストレージポリシーの設定

テーブル作成時

CREATE TABLE 文の storage_policy パラメーターを使用してポリシーを指定します。

CREATE TABLE your_table (
    ...
)
PARTITION BY ...
PROPERTIES (
    "storage_policy" = "MIXED",   -- HOT、COLD、または MIXED
    "hot_partition_count" = "5"   -- storage_policy = MIXED の場合に必須
);

既存テーブルの場合

ストレージポリシーを変更するには、ALTER TABLE を使用します。この文を実行後、移行の進捗状況を追跡できます。「ストレージポリシー変更の進捗状況の照会」をご参照ください。

-- 5 個のホットパーティションを持つ混合ストレージに切り替え
ALTER TABLE your_table
SET PROPERTIES (
    "storage_policy" = "MIXED",
    "hot_partition_count" = "5"
);

構文の完全なリファレンスについては、「CREATE TABLE」および「ALTER TABLE」をご参照ください。

重要

ストレージポリシーを設定または変更した後、ホットストレージとコールドストレージ間のデータ移行には、BUILD ジョブの完了が必要です。BUILD ジョブが完了した後、コールドデータおよびホットデータのサイズが更新されます。ポリシー設定後にデータ変更が発生しない場合、システムは自動的に BUILD をトリガーしません。その場合は、手動で BUILD TABLE を実行してデータ移行をトリガーする必要があります。

課金

ホットデータとコールドデータの階層型ストレージを有効化すると、コールドデータストレージにはホットデータストレージとは個別に請求される従量課金料金が発生します。料金の詳細については、「料金」をご参照ください。

ストレージプラン を使用してストレージコストをオフセットできます。

パーティション数変更の影響

新しいパーティションが挿入された場合

すべてのパーティションが再ソートされ、正確に N 個のホットパーティションが維持されます。キー値が最小のパーティションがホットからコールドに格下げされます。

例: hot_partition_count が 5 です。新しいパーティション 20241226(最大のキー値)が挿入されました。BUILD ジョブ実行後、システムは 20241226 をホットに昇格させ、20241221(以前の最小ホットパーティション)をコールドに移動します。

image

ホットパーティション数を変更した場合

  • N から M(M > N)に増加: M - N 個のコールドパーティション(キー値が最大のもの)がホットに昇格します。

  • N から M(M < N)に減少: N - M 個のホットパーティション(キー値が最小のもの)がコールドに格下げされます。

例 — 5 から 6 に増加: パーティション 20241220(最大のコールドパーティションキー)がコールドからホットに移動します。

image

例 — 5 から 4 に減少: パーティション 20241221(最小のホットパーティションキー)がホットからコールドに移動します。

image

ストレージポリシーの照会

すべてのテーブルを照会

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 ストレージポリシー:HOTCOLD、または MIXED
hot_partition_count ホットパーティション数(シャードを UNION した後の値。設定値を超える場合があります。下記の注意事項をご参照ください)
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_*hot_*cold_*)は、INSERT、UPDATE、DELETE、および BUILD 操作の実行に伴って変化します。

  • データ書き込み後に hot_total_sizecold_total_size の両方が 0 の場合、データはリアルタイムで同期されます。rt_total_size は現在のサイズを反映します。リアルタイムデータを既存データに変換するには、BUILD 文を実行してください。その後、hot_total_sizecold_total_size に値が設定されます。

  • 設定された hot_partition_count は、シャードごとのホットパーティション数を示します。照会される hot_partition_count は、すべてのシャードを跨いだ UNION であり、シャード間でパーティションの分布が異なる場合、設定値より大きくなる可能性があります。

例 — 照会された `hot_partition_count` と設定値の比較:

テーブル A には 2 つのシャードがあり、hot_partition_count は 2 に設定されています。

  • シャード 1:P4、P5 がホット。P1、P2、P3 がコールド。

  • シャード 2:P3、P4 がホット。P1、P2 がコールド。

照会される値は UNION:{P4, P5} ∪ {P3, P4} = {P3, P4, P5} となるため、hot_partition_count は 3 を返します。

image

ストレージポリシー変更の進捗状況の照会

ALTER TABLE を実行してストレージポリシーを変更した後は、information_schema.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 変更前のストレージポリシー:HOTCOLD、または MIXED
source_hot_partition_count 変更前のホットパーティション数
dest_storage_policy 変更後のストレージポリシー:HOTCOLD、または 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(完了)