All Products
Search
Document Center

ApsaraDB for ClickHouse:Penyimpanan bertingkat data panas dan dingin

Last Updated:Mar 19, 2026

Untuk mengurangi biaya penyimpanan data, meningkatkan kinerja kueri, dan meningkatkan pemanfaatan sumber daya sistem, kluster ApsaraDB for ClickHouse Community-compatible Edition dan Enterprise Edition yang menggunakan penyimpanan ESSD_L1 atau ESSD_L2 mendukung penyimpanan bertingkat data panas dan dingin. Fitur ini menyimpan data panas dan dingin pada media penyimpanan berbeda berdasarkan frekuensi aksesnya. Topik ini menjelaskan cara mengaktifkan penyimpanan bertingkat dan mengonfigurasi kebijakan penyimpanan.

Prasyarat

Community-compatible Edition

  • Kluster menjalankan versi 20.8 atau yang lebih baru.

  • Fitur pencadangan data dinonaktifkan untuk kluster tersebut.

Catatan

Jika Anda ingin menggunakan penyimpanan bertingkat pada kluster yang menjalankan versi sebelumnya, migrasikan data ke kluster yang menjalankan versi 20.8 atau yang lebih baru, lalu aktifkan penyimpanan bertingkat. Untuk informasi selengkapnya, lihat Migrasi data antar kluster ApsaraDB for ClickHouse Community-compatible Edition.

Enterprise Edition

Kluster menggunakan penyimpanan ESSD_L1 atau ESSD_L2. Untuk menggunakan tipe penyimpanan ini, kirimkan tiket untuk menambahkan fitur tersebut ke daftar putih.

Informasi latar belakang

Penyimpanan bertingkat data panas dan dingin mengklasifikasikan data menjadi dua kategori berdasarkan frekuensi akses:

  • Hot data: Data yang sering diakses. Data ini disimpan pada disk data panas, seperti enterprise SSD (ESSD) atau disk ultra yang dipilih saat membuat kluster, guna memenuhi persyaratan akses berkinerja tinggi.

  • Cold data: Data yang jarang diakses. Data ini disimpan pada disk data dingin yang lebih murah, guna memenuhi persyaratan penyimpanan hemat biaya.

Kebijakan penyimpanan untuk penyimpanan bertingkat data panas dan dingin adalah sebagai berikut:

Community-compatible Edition

Kebijakan penyimpanan

Detail

Kebijakan penyimpanan default

Data baru ditulis ke disk data panas untuk menyediakan kueri yang efisien. Ketika jumlah data panas mencapai ambang batas tertentu, bagian data yang menempati ruang terbesar pada disk data panas secara otomatis dipindahkan ke disk data dingin. Hal ini membebaskan ruang penyimpanan pada disk data panas.

Kebijakan penyimpanan TTL

Pernyataan Time to Live (TTL) ditambahkan ke kebijakan penyimpanan default. Hal ini secara otomatis memindahkan semua data yang dibuat sebelum interval waktu tertentu ke disk data dingin.

Enterprise Edition

Penyimpanan bertingkat diimplementasikan berdasarkan TTL global. Data yang tidak lagi berubah secara otomatis di-dump ke Object Storage Service (OSS), yang lebih murah, untuk mengurangi biaya.

  • Global TTL: Enterprise Edition mengontrol tiering data menggunakan TTL global.

  • Waktu dump: Setelah Anda mengaktifkan penyimpanan bertingkat, sistem memindai semua file data setiap hari pukul 00:00 UTC. Bagian data yang telah ada lebih lama dari TTL global di-dump dari disk panas ke disk dingin (OSS).

Peringatan

Community-compatible Edition

  • Aktifkan penyimpanan bertingkat selama jam sepi. Setelah Anda mengaktifkan fitur ini, kluster akan segera restart. Selama proses restart, Anda hanya dapat melihat informasi kluster dan tidak dapat melakukan upgrade, scale out, scale in, atau mengubah pengaturan parameter.

  • Saat menggunakan penyimpanan bertingkat, Anda harus menentukan kebijakan penyimpanan untuk setiap tabel.

    • Saat membuat tabel, tentukan kebijakan penyimpanan menggunakan SETTINGS storage_policy = 'hot_to_cold'.

    • Ubah kebijakan penyimpanan tabel yang sudah ada.

      Untuk kluster yang mengaktifkan kebijakan penyimpanan bertingkat setelah 1 Januari 2024

      Jalankan pernyataan berikut untuk mengubah kebijakan.

      ALTER TABLE <table_name> MODIFY SETTING storage_policy = 'hot_to_cold';

      Untuk kluster yang mengaktifkan kebijakan penyimpanan bertingkat sebelum 1 Januari 2024

      Tambahkan kebijakan penyimpanan bertingkat baru melalui operasi O&M. Hal ini memungkinkan Anda menggunakan kebijakan baru untuk memigrasikan data dari disk panas ke disk dingin.

  • Setelah Anda mengaktifkan penyimpanan bertingkat, Anda tidak dapat menonaktifkannya.

Enterprise Edition

  • Jika data dalam penyimpanan dingin berubah, data tersebut dimuat ulang ke penyimpanan panas untuk membangun kembali file data. Perubahan tersebut mencakup operasi `Mutation` atau `Optimize` yang Anda jalankan, atau operasi `Merge` yang dipicu sistem berdasarkan aturan. File data baru tidak langsung dipindahkan ke penyimpanan dingin. Data tersebut hanya di-dump kembali setelah melewati durasi lebih lama dari TTL global. Oleh karena itu, hindari penambahan, penghapusan, atau modifikasi data dingin secara berulang.

  • Operasi dump tidak bersifat instan. Sistem menyesuaikan kecepatan dump secara dinamis berdasarkan faktor-faktor seperti tekanan akses saat ini pada sistem penyimpanan. Operasi ini dapat memakan waktu beberapa jam tergantung pada volume data yang akan di-dump.

  • Aturan penerapan perubahan TTL:

    • Menambah TTL: Perubahan berlaku pada waktu dump berikutnya. Namun, data yang sudah di-dump ke penyimpanan dingin tidak dipindahkan kembali ke penyimpanan panas.

    • Mengurangi TTL: Perubahan berlaku pada waktu dump berikutnya.

  • Nilai minimum untuk TTL global adalah 1 hari. Ukuran langkah penyesuaian minimum adalah 1 hari.

Penagihan

  • Aturan penagihan adalah sebagai berikut.

    Tipe penyimpanan

    Detail penagihan

    Penyimpanan data panas

    Setelah Anda membeli kluster, Anda memiliki ruang penyimpanan data panas yang setara dengan kapasitas penyimpanan kluster tersebut.

    Penyimpanan data dingin

    Penyimpanan data dingin menggunakan metode penagihan pay-as-you-go. Anda tidak perlu membeli ruang penyimpanan tetap di muka. Anda ditagih per jam berdasarkan ruang penyimpanan yang digunakan.

  • Untuk informasi harga detail penyimpanan data dingin, lihat Harga bucket Edisi Komunitas dan Metode penagihan pay-as-you-go Edisi Perusahaan.

  • Rumus penagihan: Biaya penyimpanan dingin = Harga satuan penyimpanan data dingin × Penggunaan penyimpanan data dingin × Durasi penggunaan.

  • Sebagai contoh, jika harga satuan penyimpanan data dingin adalah USD 0,000026 per GB/jam dan Anda menggunakan 2.000 GB penyimpanan dingin dari pukul 19.00 hingga 20.00, total biayanya adalah USD 0,000026/GB/jam × 2.000 GB × 1 jam = USD 0,052. Jika Anda melepaskan 500 GB ruang penyimpanan dingin dari pukul 20.00 hingga 21.00 dan menggunakan 1.500 GB, total biaya untuk jam tersebut adalah USD 0,000026/GB/jam × 1.500 GB × 1 jam = USD 0,039.

Catatan

Harga dalam contoh ini hanya sebagai referensi. Harga aktual berlaku di Konsol.

Aktifkan penyimpanan bertingkat data panas dan dingin

Community-compatible Edition

  1. Masuk ke Konsol ApsaraDB for ClickHouse. Di pojok kiri atas halaman, pilih wilayah tempat kluster berada.

  2. Pada halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster tujuan.

  3. Di panel navigasi sebelah kiri, klik Cold and hot layered storage.

  4. Klik Click to Enable Layered Storage.

  5. Pada kotak dialog yang muncul, klik OK.

    Setelah Anda mengonfirmasi, kluster akan restart. Fitur diaktifkan ketika status kluster berubah dari Changing Configuration menjadi Running.

Enterprise Edition

Catatan

Untuk ApsaraDB for ClickHouse Enterprise Edition, pertama-tama kirimkan tiket untuk menambahkan penyimpanan bertingkat data panas dan dingin ke daftar putih. Kemudian, lakukan langkah-langkah berikut untuk mengaktifkan fitur tersebut pada kluster tujuan.

  1. Masuk ke Konsol ApsaraDB for ClickHouse. Di pojok kiri atas halaman, pilih wilayah tempat kluster berada.

  2. Pada halaman Clusters, klik tab Enterprise Edition Clusters, lalu klik ID kluster tujuan.

  3. Di panel navigasi sebelah kiri, klik Cold and hot layered storage.

  4. Klik Click to Enable Layered Storage.

  5. Pada kotak dialog yang muncul, konfigurasikan TTL global.

  6. Klik OK.

    Fitur diaktifkan ketika status kluster berubah menjadi Running dan halaman Tiered Storage menampilkan Enabled.

Setelah Anda mengaktifkan fitur tersebut, Anda dapat mengklik ikon edit di samping Parameter Value untuk menyesuaikan TTL global. TTL baru berlaku pada epoch dump berikutnya (00:00 UTC pada hari berikutnya).

Kelola kebijakan penyimpanan bertingkat untuk Community-compatible Edition

Kebijakan penyimpanan default untuk penyimpanan bertingkat data panas dan dingin

Setelah Anda mengaktifkan penyimpanan bertingkat, kebijakan penyimpanan default memiliki parameter berikut.

Parameter

Deskripsi

move_factor

Ketika persentase ruang bebas pada disk data panas kurang dari nilai ini, bagian data yang menempati ruang terbesar pada disk data panas secara otomatis dipindahkan ke disk data dingin.

Nilainya harus berada dalam rentang [0, 1]. Nilai 0 menonaktifkan penyimpanan bertingkat berbasis kapasitas disk. Nilai default adalah 0,1. Artinya, data secara otomatis dipindahkan ketika persentase ruang bebas kurang dari 10%. Anda juga dapat menetapkan kebijakan penyimpanan bertingkat berbasis TTL saat membuat tabel.

Catatan

Untuk mempelajari cara melihat disk space, lihat View disk space.

prefer_not_to_merge

Menentukan apakah akan menggabungkan data pada disk data dingin. Nilai yang valid:

  • true: Data tidak digabung. Ini adalah nilai default.

  • Penggabungan dinonaktifkan.

Tetapkan kebijakan penyimpanan bertingkat berbasis TTL saat membuat tabel

Tambahkan pernyataan TTL ke kebijakan penyimpanan default. Hal ini secara otomatis memindahkan semua data yang dibuat sebelum interval waktu tertentu ke disk data dingin.

Sintaks

TTL <time_column> + INTERVAL <number> TO DISK 'cold_disk'

Deskripsi parameter

Parameter

Deskripsi

time_column

Kolom dengan tipe data Date atau DateTime.

number

Interval waktu.

Unit umum adalah Day, Week, Month, dan Year.

Catatan

Untuk informasi selengkapnya tentang klausa TTL, lihat TTL.

Contoh

Pindahkan semua data yang berusia lebih dari 90 hari ke disk data dingin berdasarkan kolom `date`. Pernyataan untuk membuat tabel adalah sebagai berikut.

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';

Ubah kebijakan penyimpanan bertingkat berbasis TTL

Anda dapat mengubah kolom tipe tanggal atau tanggal dan interval waktu dalam kebijakan penyimpanan bertingkat berbasis TTL.

Perhatian

  • Dampak terhadap data

    • Data historis: Secara default, data historis disimpan sesuai kebijakan baru. Proses ini bersifat asinkron dan memerlukan waktu. Agar perubahan berlaku segera, jalankan pernyataan ALTER TABLE materialize TTL; setelah Anda mengubah kebijakan. Jika Anda tidak ingin mengubah kebijakan penyimpanan untuk data historis, jalankan pernyataan SET materialize_ttl_after_modify=0; sebelum mengubah kebijakan.

    • Data inkremental: Secara default, data inkremental juga disimpan sesuai kebijakan baru.

  • Setelah Anda mengubah kebijakan, data yang sudah berada di disk data dingin tidak secara otomatis dipindahkan ke disk data panas. Untuk memindahkan data tersebut, lihat Move data between hot and cold disks.

Sintaks

ALTER TABLE <table_name> ON CLUSTER default MODIFY TTL <time_column> + INTERVAL <number> TO DISK 'cold_disk';

Deskripsi parameter

Parameter

Deskripsi

table_name

Nama tabel.

time_column

Kolom tanggal atau tipe tanggal target.

number

Interval waktu.

Unit umum adalah Day, Week, Month, dan Year.

Manajemen data untuk Community-compatible Edition

Pindahkan data antara disk panas dan dingin

  • Pindahkan data dari disk data panas ke disk data dingin.

    ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'cold_disk';
  • Pindahkan data dari disk data dingin ke disk data panas.

    ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'default';
    Catatan

    partition adalah nama partisi. Anda dapat menemukannya di tabel sistem `system.parts`.

Lihat data pada disk panas dan dingin

  • Lihat data pada disk data panas:

    SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='default' AND active = 1;
  • Lihat data pada disk data dingin:

    SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='cold_disk' AND active = 1;

Lihat disk space

Setelah Anda mengaktifkan penyimpanan bertingkat, jalankan pernyataan berikut untuk melihat disk space.

SELECT * FROM system.disks;

Hasil berikut dikembalikan.

┌─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 │
└──────────┴────────────────────────────────────────┴──────────────────────┴──────────────────────┴──────────────┴───────────────────┴────────┘

Kolom dalam set hasil dijelaskan sebagai berikut.

Parameter

Deskripsi

name

Nama disk.

  • cold_disk: Disk data dingin.

  • default: Disk data panas.

path

Jalur penyimpanan data pada disk.

free_space

Ruang bebas tersisa pada disk. Ruang bebas pada disk data dingin tidak terbatas. Satuan: byte.

total_space

Ruang total pada disk. Ruang bebas pada disk data dingin tidak terbatas. Satuan: byte.

used_space

Ruang yang digunakan pada disk. Satuan: byte.

keep_free_space

Ruang bebas yang dicadangkan. Satuan: byte.

type

Media penyimpanan.

  • OSS: Data dingin disimpan di OSS.

  • local: disk lokal.

FAQ

Q: Mengapa data tidak dipindahkan dari disk data panas ke disk data dingin?

A: Apakah data dipindahkan ke disk data dingin bergantung pada nilai move_ttl_info.min dan move_ttl_info.max dalam tabel `system.parts`. Anda dapat menggunakan pernyataan berikut untuk mengambil nilai-nilai tersebut.

SELECT move_ttl_info.min, move_ttl_info.max FROM system.parts WHERE database = '<db_name>' AND table = '<tb_name>' AND disk_name = 'default'

Jika waktu saat ini lebih awal daripada salah satu nilai yang dikembalikan, bagian data tersebut tidak dipindahkan ke penyimpanan dingin. Kemungkinan lainnya adalah sistem sedang dalam proses memindahkan data, tetapi operasi tersebut belum selesai.