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

AnalyticDB for MySQL:ホットとコールドのデータストレージの分離

最終更新日:Jun 25, 2024

AnalyticDB for MySQL V3.1.3.3以降のエラスティックモードfor Cluster Editionでは、テーブルまたはパーティションに保存されているホットデータとコールドデータを分離できます。

前提条件

AnalyticDB for MySQLクラスターは、次の要件を満たす必要があります。

  • クラスターは [クラスターエディション] になっています。

  • クラスターのマイナーエンジンバージョンは3.1.3.3以降です。

    説明
    • AnalyticDB For MySQLクラスターのバージョンを表示する方法については、AnalyticDB for MySQLクラスターのバージョンを表示するにはどうすればよいですか?

    • AnalyticDB for MySQLクラスターのバージョンを更新するには、 チケットを起票し、更新の時間枠を指定します。 エンジンバージョンの更新が完了するまでに約20分かかる場合があります。 更新中、クラスターは正常に実行できますが、数回中断されることがあります。 オフピーク時にクラスターのエンジンバージョンを更新し、アプリケーションをデータベースシステムに自動的に再接続できるようにすることをお勧めします。

課金ルール

クラスターを使用すると、従量課金に基づいてホットデータとコールドデータのストレージに対して課金されます。 詳細については、「Data Warehouse Edition (V3.0) 」および「Data Warehouse Edition (V3.0) の料金」をご参照ください。

ストレージポリシー

AnalyticDB for MySQLには、コールドストレージ、ホットストレージ、混合ストレージの3つのポリシーが用意されています。

  • コールドストレージは、費用対効果の高いストレージポリシーです。 このストレージポリシーを使用すると、すべてのデータがObject storage Service (OSS) に保存されます。

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

  • 混合ストレージは、指定されたパーティションをSSDに保存し、他のパーティションをOSSに保存できるようにするストレージポリシーです。

image.png

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

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

既存のテーブルのホットデータとコールドデータのストレージポリシーを変更するには、ALTER table table_name storage_policy; ステートメントを実行します。 詳細については、「ALTER TABLE」トピックの「ストレージポリシー」セクションをご参照ください。

混合ストレージの原理

混合ストレージポリシーを使用する場合、hot_partition_countパラメーターを使用してホットパーティションの数を指定する必要があります。 hot_partition_countの詳細については、「CREATE TABLE」をご参照ください。

パーティションは、パーティションキー値によって降順にソートされます。 hot_partition_countパラメーターがNに設定されている場合、SSDに保存されている最初のN個のパーティションはホットパーティションであり、OSSに保存されている他のパーティションはコールドパーティションです。

たとえば、ホットパーティションの数が4に設定され、すべてのパーティションが、20201110、20201109、20201108、20201107、20201106、20201105、および20201104の方法でパーティションキー値によってソートされると仮定します。 この場合、最初の4つのパーティションはホットパーティションとして指定され、他のパーティションはコールドパーティションです。

ホットパーティションとコールドパーティションの分布は、次のシナリオで変更される可能性があります。

ホットパーティションとコールドパーティションの分布に対するデータ変更の影響

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

次の例では、新しいパーティション20201110がテーブルに挿入されます。 このパーティションは、テーブルのすべてのパーティションの中で最大のパーティションキー値を持ちます。 その結果、最小のパーティションキー値を有するパーティション20201105のデータがホットパーティションからコールドパーティションに移動され、パーティション20201110のデータがホットパーティションに移動される。热冷迁移

ホットパーティションとコールドパーティションの分布に対するホットパーティション量の変化の影響

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

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

    次の例では、ホットパーティションの数を5から6に変更します。 その結果、最大のパーティションキー値を有するパーティション20201104のデータが、コールドパーティションからホットパーティションに移行される。冷热迁移

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

    例えば、ホットパーティションの数が5から4に変更される。 その結果、最小のパーティションキー値を有するパーティションのデータは、ホットパーティションからコールドパーティションに移行される。

ホットとコールドのデータストレージの分布を照会する

table_usageテーブルを使用して、ホットおよびコールドデータストレージの分布を照会できます。 例:

  • すべてのテーブルのホットおよびコールドデータストレージの分布を照会します。

    information_schema.table_usageから * を選択します。
  • 特定のテーブルのホットおよびコールドデータストレージの分布を照会します。

    select * from information_schema.table_usage where table_schema='<schema_name>' およびtable_name='<table_name>';

次の表に、table_usageテーブルに含まれるフィールドを示します。

フィールド

説明

table_schema

データベース名。

table_name

<td class="en-UStry align-left colsep-1 rowsep-1">テーブル名。</td>

storage_policy

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

  • ホット

  • 寒い

  • 混合

hot_partition_count

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

cold_partition_count

冷たいパーティションの数。

rt_total_size

リアルタイムデータの総量。rt_data_sizert_index_sizeの合計です。 単位:バイト

rt_data_size

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

rt_index_size

リアルタイムデータでの主キーとインデックスデータの量。 単位:バイト

hot_total_size

ホットパーティション内のデータの総量。hot_data_sizehot_index_sizeの合計です。 単位:バイト

hot_data_size

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

hot_index_size

ホットパーティション内の主キーとインデックスデータの量。 単位:バイト

cold_total_size

コールドパーティション内のデータの総量。cold_data_sizecold_index_sizeの合計です。 単位:バイト

cold_data_size

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

cold_index_size

コールドパーティション内の主キーとインデックスデータの量。 単位:バイト

注:

  • table_usageテーブルはリアルタイムで更新されます。 rt_total_sizert_data_sizert_index_sizehot_total_sizehot_data_sizehot_index_sizecold_total_sizecold_data_size、およびcold_index_sizeフィールドの値は、INSERT、UPDATE、DELETE、およびBUILDステートメントの実行によって異なります。

  • データがロードされた後、hot_total_sizecold_total_sizeの値が両方とも0である場合、データはリアルタイムエンジンに保存され、rt_total_sizeの値はリアルタイムデータの量を示します。 次のBUILDステートメントを実行して、リアルタイムデータをパーティション分割データに変換し、hot_total_sizeおよびcold_total_sizeの値を照会できます。

    ビルドテーブル <table_name>;
  • ユーザー定義のhot_partition_countフィールドは、リストパーティション分割後の単一のシャード内のホットパーティションの数を示します。一方、table_usageテーブルから照会されたhot_partition_countフィールドは、シャードが結合された後のホットパーティションの数を示します。 データパーティションがシャード間で異なる方法で分散されている場合、table_usageテーブルから照会されるhot_partition_countフィールドの値は、ユーザー定義のhot_partition_countフィールドの値よりも大きくなる可能性があります。

    たとえば、テーブルAがShard1およびShard2を含み、hot_partition_countが2に設定されると仮定する。 次の図は、表Aのデータパーティションの分布を示しています。shard

    シャード1: P4とP5はホットパーティションです。 P1、P2、およびP3は低温区画である。

    シャード2: P3とP4はホットパーティションです。 P1およびP2は低温区画である。

    ホットパーティションの実際の数は、以下の式を使用することによって計算される。ユニオン (P3, P4) = (P3, P4, P5) 。 したがって、hot_partition_countの実際の値は3です。

ストレージポリシーの変更の進行状況を照会する

ALTER TABLE文でストレージポリシーを変更できます。 詳細については、「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>';

次の表に、storage_policy_modify_progressテーブルに含まれるフィールドを示します。

フィールド

説明

table_schema

データベース名。

table_name

<td class="en-UStry align-left colsep-1 rowsep-1">テーブル名。</td>

task_id

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

source_storage_policy

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

  • ホット

  • 寒い

  • 混合

source_hot_partition_count

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

dest_storage_policy

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

  • ホット

  • 寒い

  • 混合

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: 変更は開始されません。

  • 実行中: 変更は進行中です。

  • 終了: 変更は完了です。