前提条件
説明
バージョンがこの機能をサポートしていないApsaraDB for ClickHouseクラスターでホットデータとコールドデータの階層ストレージを使用する場合は、V20.8以降のApsaraDB for ClickHouseクラスターを作成し、新しいクラスターにデータを移行できます。 詳細については、「ApsaraDB For ClickHouse Community-compatible Editionクラスター間のデータ移行」をご参照ください。
ApsaraDB for ClickHouse Enterprise Editionは、ホットデータをキャッシュに、コールドデータを共有ストレージに自動的に保存します。 ホットデータとコールドデータの階層ストレージは、ホットデータとコールドデータのストレージルールに依存しません。
背景情報
ホットデータは、頻繁にアクセスされ、拡張SSD (ESSD) またはウルトラディスクに保存されるデータです。 これらのディスクは、クラスターを作成するときに選択されます。 ホットデータストレージは、高性能なクエリを必要とするビジネスシナリオに適しています。
コールドデータは、頻繁にアクセスされないデータです。 コールドデータは、コスト効率の高いストレージの要件を満たすために、低ストレージコストでコールドデータディスクに保存されます。
ホットデータとコールドデータの階層ストレージは、次のストレージポリシーを提供します。
ストレージポリシー | 説明 |
デフォルトのストレージポリシー | 新しく書き込まれたデータは、効率的なクエリをサポートするためにホットデータディスクに保存されます。 格納されたホットデータの量が格納しきい値に達すると、ホットデータディスク内で最大サイズの部品データファイルが自動的にコールドデータディスクに移行されます。 このようにして、新たに書き込まれたホットデータをホットデータディスクに記憶することができる。 |
生存時間 (TTL) に基づくストレージポリシー | デフォルトのストレージポリシーにTTL句を追加します。 このようにして、TTL句で指定された期間より前に生成されたすべてのデータは、自動的にコールドデータディスクに移行されます。 |
注意事項
オフピーク時にのみホットデータとコールドデータの階層ストレージを有効にすることを推奨する場合。 ホットデータとコールドデータの階層ストレージを有効にすると、クラスターが再起動されます。 再起動中は、クラスター情報のみを表示できます。 クラスターのアップグレード、スケールアウト、スケールイン、またはパラメーター設定の変更はできません。
ホットデータとコールドデータの階層ストレージを使用する場合、テーブルのストレージポリシーを指定する必要があります。
ホットデータとコールドデータの階層ストレージ機能は、この機能を有効にした後は無効にできません。
課金
次のルールに基づいて、ホットデータおよびコールドデータ機能の階層ストレージに対して課金されます。
ストレージタイプ | 課金の詳細 |
ホットデータストレージ | クラスター用に購入するストレージ容量は、ホットデータ専用です。 クラスターを購入した後、ホットデータ用の追加ストレージを購入する必要はありません。 |
コールドデータストレージ | 従量課金の課金方法に基づいて、コールドデータストレージに対して課金されます。 ストレージを使用する前に、コールドデータ用のストレージを購入する必要はありません。 使用済みストレージに基づいて、1時間ごとにコールドデータストレージに対して課金されます。 |
コールドデータストレージの単価の詳細については、「ApsaraDB For ClickHouseクラスターのストレージ料金」をご参照ください。
課金式: コールドストレージスペースの料金=コールドデータストレージの単価 × 使用済みコールドデータストレージ × 使用期間。
たとえば、コールドデータストレージの単価がGB-時間あたりUSD 0.000026で、19:00から20:00まで2,000 GBのコールドデータが保存されている場合、合計料金は次の式に基づいて計算されます。GB-時間あたりUSD 0.000026 × 2,000 GB × 1時間=USD 0.052。 20:00〜21:00の間にコールドデータ用に500 GBのストレージスペースを解放した場合、1,500 GBのストレージのみが使用されます。 この場合、20:00〜21:00の間に発生する合計料金は、次の式に基づいて計算されます。GB時間あたりのUSD 0.000026 × 1,500 GB × 1時間=USD 0.039。
説明
前述の価格はあなたの参照のためにだけ提供されます。 実際の課金シナリオでは、ApsaraDB for ClickHouseコンソールに表示される料金が優先されます。
ホットデータとコールドデータの階層化ストレージの有効化
ApsaraDB for ClickHouse コンソールにログインします。
上部のナビゲーションバーで、クラスターがデプロイされているリージョンを選択します。
[クラスター] ページで、[コミュニティ互換版のクラスター] タブをクリックし、管理するクラスターのIDをクリックします。
左側のナビゲーションウィンドウで、[コールドおよびホットレイヤードストレージ] をクリックします。
クリックして階層ストレージを有効にするをクリックします。
[階層ストレージの有効化] メッセージで、[OK] をクリックします。
その後、システムはクラスターを再起動します。 クラスターの状態が [設定の変更] から [実行中] に変更されると、ホットデータとコールドデータの階層ストレージが有効になります。
ホットデータとコールドデータの階層ストレージが有効化された後に使用されるデフォルトストレージポリシー
次の表に、ホットデータとコールドデータの階層ストレージが有効になった後に使用されるデフォルトのストレージポリシーのパラメーターを示します。
パラメーター | 説明 |
move_factor | ホットデータの全ストレージに対するホットデータの使用可能なストレージの割合がmove_factorパラメーターの値より小さい場合、ホットデータディスク内で最大のサイズの部品データファイルが自動的にコールドデータディスクに移行されます。 有効値: 0〜1 move_factorパラメーターを0に設定すると、ディスクストレージ容量に基づくホットデータとコールドデータの階層ストレージ機能が無効になります。 デフォルト値は 0.1 です。 デフォルト値は、ホットデータの使用可能なストレージの割合が10% 未満の場合にデータが自動的に移行されることを指定します。 テーブルを作成するときに、TTLベースの階層ストレージポリシーを追加することもできます。 詳細については、「TTLベースの階層ストレージポリシーの追加」をご参照ください。 説明 ディスク領域の表示方法の詳細については、このトピックの「ディスク領域の表示」をご参照ください。 |
prefer_not_to_merge | コールドデータディスク上のデータをマージするかどうかを指定します。 有効な値: |
TTLベースの階層ストレージポリシーの追加
デフォルトのストレージポリシーにTTL句を追加します。 このようにして、TTL句で指定された期間より前に生成されたすべてのデータは、自動的にコールドデータディスクに移行されます。
構文
TTL <time_column> + INTERVAL <number> TO DISK 'cold_disk'
Parameters
パラメーター | 説明 |
time_column | DATEまたはDATETIMEデータ型の列。 |
数値 | 移行するデータが生成されるまでの期間。 一般的な単位は、日、週、月、年です。 |
説明
TTL句の詳細については、「TTL」をご参照ください。
例
日付列に基づいて、90日前に生成されたすべてのデータをコールドデータディスクに移行します。 日付列には、データが生成された日付が含まれます。 次の文を実行して、テーブルを作成します。
CREATE TABLE ttl_test_tbl
(
`f1` String,
`f2` String,
`f3` Int64,
`f4` Float64,
`date` Date
)
ENGINE = MergeTree()
PARTITION BY date
ORDER BY f1
TTL date + INTERVAL 90 DAY TO DISK 'cold_disk'
SETTINGS storage_policy = 'hot_to_cold';
ホットデータとコールドデータのTTLベースの階層化ストレージの変更
TTLベースの階層ストレージポリシーで、日付または日付タイプの列を指定するtime_columnパラメーターと間隔を指定するnumberパラメーターを変更できます。
構文
ALTER TABLE <table_name> ON CLUSTER default MODIFY TTL <time_column> + INTERVAL <number> TO DISK 'cold_disk';
説明
パラメーター | 説明 |
table_name | <td class="en-UStry align-left colsep-1 rowsep-1">テーブル名。</td> |
time_column | 新しいストレージポリシーの日付または日付タイプの列。 |
数値 | 移行するデータが生成されるまでの期間。 一般的な単位は、日、週、月、年です。 |
ホットデータディスクとコールドデータディスクのデータを移行する
ホットデータディスクとコールドデータディスクのデータを表示する
ディスク領域の表示
ホットデータとコールドデータの階層ストレージが有効になったら、次のステートメントを実行してディスク容量を表示できます。
SELECT * FROM system.disks;
次の結果が返されます。
┌─name─────┬─────────path───────────────────────────┬─free_space───────────┬─total_space ─────────┬─used_space───┬─keep_free_space───┬──type──┐
│ cold_disk│ /clickhouse/data/data/disks/cold_disk/ │ 18446744073709551615 │ 18446744073709551615 │ 115312080698 │ 0 │ OSS │
│ default │ /clickhouse/data/data/ │ 201663209472 │ 207083249664 │ 5420040192 │ 0 │ local │
└ ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
次の表に、返された結果のパラメーターを示します。
パラメーター | 説明 |
name | ディスク名。 |
パス | ディスク上のデータが格納されるパス。 |
free_space | ディスク上の使用可能なスペース。 コールドデータディスク上の利用可能なスペースは制限されない。 単位はバイトです。 |
total_space | 合計ディスク容量。 コールドデータディスク上の利用可能なスペースは制限されない。 単位はバイトです。 |
used_space | ディスク上で使用されるスペース。 単位はバイトです。 |
keep_free_space | ディスク上の予約済みの空き容量。 単位はバイトです。 |
type | ストレージメディア。 有効な値: |
よくある質問
データがホットデータディスクからコールドデータディスクに移行されないのはなぜですか?
move_ttl_info.min
およびmove_ttl_info.max
パラメーターの値を表示して、データがホットデータディスクからコールドデータディスクに移行されているかどうかを確認できます。 次のステートメントを実行して、2つのパラメーターの値を照会できます。
SELECT move_ttl_info.min,move_ttl_info.max FROM system.parts WHERE database = '<db_name>'AND table = '<tb_name>'AND disk_name = 'default'
現在の時刻がいずれかの戻り値よりも前の場合、データはコールドデータディスクに移行されません。 さらに、システムは、データを移行しているか、または移行の準備をしている。 移行が完了していません。