AnalyticDB for MySQL memungkinkan Anda menyimpan partisi hot dan cold pada media penyimpanan terpisah—SSD untuk data hot dan Object Storage Service (OSS) untuk data cold—sehingga Anda memperoleh kinerja kueri cepat di tempat yang penting sekaligus menjaga biaya penyimpanan tetap rendah.
Penyimpanan bertingkat hanya berlaku untuk tabel yang dipartisi berdasarkan tanggal atau waktu. Kluster harus menjalankan versi minor 3.1.3.3 atau lebih baru dan termasuk dalam salah satu edisi berikut: Enterprise Edition, Basic Edition, Data Lakehouse Edition, atau Data Warehouse Edition mode Elastic. Untuk memeriksa atau memperbarui versi minor, masuk ke AnalyticDB for MySQL console dan buka bagian Configuration Information pada halaman Cluster Information.
Pilih kebijakan penyimpanan
AnalyticDB for MySQL menyediakan tiga kebijakan penyimpanan. Gunakan tabel berikut untuk memilih kebijakan yang tepat sesuai workload Anda:
| Storage policy | Where data is stored | Best for | Cost |
|---|---|---|---|
| Hot storage | Semua data di SSD | Tabel yang sering dikueri dengan persyaratan latensi ketat | Tertinggi |
| Cold storage | Semua data di OSS (zone-redundant storage, ZRS) | Data arsip yang jarang atau tidak pernah diakses | Terendah |
| Mixed storage | Partisi hot di SSD, partisi cold di OSS | Tabel besar yang dipartisi berdasarkan waktu, di mana data terbaru aktif dan data lama jarang dikueri | Sedang |
Memilih antar kebijakan:
-
Gunakan hot storage ketika latensi kueri sangat kritis dan Anda mengakses sebagian besar data secara rutin.
-
Gunakan cold storage untuk data yang diarsipkan dan hampir tidak pernah dikueri.
-
Gunakan mixed storage untuk workload time-series seperti tabel log, riwayat pesanan, dan data pemantauan—pilihan paling umum untuk tabel partisi besar.
Cara kerja mixed storage
Saat Anda memilih mixed storage, Anda menentukan jumlah partisi hot (N). AnalyticDB for MySQL mengurutkan semua partisi berdasarkan nilai kunci partisi secara descending: N partisi teratas adalah partisi hot yang disimpan di SSD, sedangkan sisanya adalah partisi cold yang disimpan di OSS.
Ketika partisi ditambahkan atau jumlah partisi hot diubah, sistem secara otomatis mengurutkan ulang dan melakukan migrasi data untuk mempertahankan distribusi yang benar. Untuk detailnya, lihat Dampak perubahan jumlah partisi.
Tetapkan kebijakan penyimpanan
Saat pembuatan tabel
Tentukan kebijakan menggunakan parameter storage_policy dalam pernyataan CREATE TABLE Anda:
CREATE TABLE your_table (
...
)
PARTITION BY ...
PROPERTIES (
"storage_policy" = "MIXED", -- HOT, COLD, atau MIXED
"hot_partition_count" = "5" -- Diperlukan saat storage_policy = MIXED
);
Untuk tabel yang sudah ada
Gunakan ALTER TABLE untuk mengubah kebijakan penyimpanan. Setelah menjalankan pernyataan ini, Anda dapat melacak progres migrasi—lihat Kueri progres perubahan kebijakan penyimpanan.
-- Beralih ke mixed storage dengan 5 partisi hot
ALTER TABLE your_table
SET PROPERTIES (
"storage_policy" = "MIXED",
"hot_partition_count" = "5"
);
Untuk referensi sintaks lengkap, lihat CREATE TABLE dan ALTER TABLE.
Setelah Anda menetapkan atau mengubah kebijakan penyimpanan, migrasi data antara penyimpanan hot dan cold memerlukan pekerjaan BUILD agar selesai. Anda dapat melihat ukuran data cold dan hot yang diperbarui setelah pekerjaan BUILD selesai. Jika tidak terjadi perubahan data setelah Anda menetapkan kebijakan, sistem tidak akan secara otomatis memicu BUILD. Dalam kasus ini, Anda harus menjalankan BUILD TABLE secara manual untuk memicu migrasi data.
Tagihan
Setelah Anda mengaktifkan penyimpanan bertingkat data hot dan cold, penyimpanan data cold dikenai biaya pay-as-you-go terpisah, yang ditagih secara independen dari penyimpanan data hot. Untuk detail harga, lihat Pricing.
Gunakan storage plans untuk mengimbangi biaya penyimpanan.
Dampak perubahan jumlah partisi
Saat partisi baru dimasukkan
Semua partisi diurutkan ulang untuk mempertahankan tepat N partisi hot. Partisi dengan nilai kunci terkecil diturunkan statusnya dari hot menjadi cold.
Contoh: hot_partition_count bernilai 5. Partisi baru 20241226 (nilai kunci terbesar) dimasukkan. Setelah pekerjaan BUILD, sistem mempromosikan 20241226 menjadi hot dan memindahkan 20241221 (partisi hot terkecil sebelumnya) ke cold.
Saat Anda mengubah jumlah partisi hot
-
Meningkat dari N ke M (M > N):
M - Npartisi cold (dengan nilai kunci terbesar) dipromosikan menjadi hot. -
Menurun dari N ke M (M < N):
N - Mpartisi hot (dengan nilai kunci terkecil) diturunkan menjadi cold.
Contoh — meningkat dari 5 ke 6: Partisi 20241220 (kunci partisi cold terbesar) dipindahkan dari cold ke hot.
Contoh — menurun dari 5 ke 4: Partisi 20241221 (kunci partisi hot terkecil) dipindahkan dari hot ke cold.
Kueri kebijakan penyimpanan
Kueri untuk semua tabel
SELECT * FROM information_schema.table_usage;
Kueri untuk tabel tertentu
SELECT * FROM information_schema.table_usage
WHERE table_schema = '<schema_name>' AND table_name = '<table_name>';
Parameter respons
| Parameter | Description |
|---|---|
table_schema |
Nama database |
table_name |
Nama tabel |
storage_policy |
Kebijakan penyimpanan: HOT, COLD, atau MIXED |
hot_partition_count |
Jumlah partisi hot (setelah shard di-union; mungkin melebihi nilai yang dikonfigurasi—lihat catatan di bawah) |
cold_partition_count |
Jumlah partisi cold |
rt_total_size |
Ukuran total data real-time (rt_data_size + rt_index_size). Satuan: byte |
rt_data_size |
Ukuran data real-time. Satuan: byte |
rt_index_size |
Ukuran data primary key dan indeks dalam data real-time. Satuan: byte |
hot_total_size |
Ukuran total data dalam partisi hot (hot_data_size + hot_index_size). Satuan: byte |
hot_data_size |
Ukuran data dalam partisi hot. Satuan: byte |
hot_index_size |
Ukuran data primary key dan indeks dalam partisi hot. Satuan: byte |
cold_total_size |
Ukuran total data dalam partisi cold (cold_data_size + cold_index_size). Satuan: byte |
cold_data_size |
Ukuran data dalam partisi cold. Satuan: byte |
cold_index_size |
Ukuran data primary key dan indeks dalam partisi cold. Satuan: byte |
Catatan penggunaan:
-
Semua nilai ukuran (
rt_*,hot_*,cold_*) berubah seiring operasi INSERT, UPDATE, DELETE, dan BUILD dijalankan. -
Jika
hot_total_sizedancold_total_sizekeduanya bernilai 0 setelah penulisan data, data tersebut disinkronkan secara real time.rt_total_sizemencerminkan ukuran saat ini. Jalankan pernyataan BUILD untuk mengonversi data real-time menjadi data historis, setelah ituhot_total_sizedancold_total_sizeakan terisi. -
hot_partition_countyang dikonfigurasi menentukan jumlah partisi hot per shard.hot_partition_countyang dikueri merupakan hasil union seluruh shard dan mungkin lebih besar jika distribusi partisi berbeda antar shard.
Contoh — nilai hot_partition_count yang dikueri vs. nilai yang dikonfigurasi:
Tabel A memiliki dua shard dan hot_partition_count dikonfigurasi sebagai 2.
-
Shard 1: P4, P5 adalah hot; P1, P2, P3 adalah cold.
-
Shard 2: P3, P4 adalah hot; P1, P2 adalah cold.
Nilai yang dikueri adalah hasil union: {P4, P5} ∪ {P3, P4} = {P3, P4, P5}, sehingga hot_partition_count mengembalikan nilai 3.
Kueri progres perubahan kebijakan penyimpanan
Setelah menjalankan ALTER TABLE untuk mengubah kebijakan penyimpanan, lacak progres migrasi dari information_schema.storage_policy_modify_progress.
Kueri untuk semua tabel
SELECT * FROM information_schema.storage_policy_modify_progress;
Kueri untuk tabel tertentu
SELECT * FROM information_schema.storage_policy_modify_progress
WHERE table_schema = '<schema_name>' AND table_name = '<table_name>';
Parameter respons
| Parameter | Description |
|---|---|
table_schema |
Nama database |
table_name |
Nama tabel |
task_id |
ID pekerjaan perubahan kebijakan penyimpanan |
source_storage_policy |
Kebijakan penyimpanan awal: HOT, COLD, atau MIXED |
source_hot_partition_count |
Jumlah partisi hot sebelum perubahan |
dest_storage_policy |
Kebijakan penyimpanan baru: HOT, COLD, atau MIXED |
dest_hot_partition_count |
Jumlah partisi hot setelah perubahan |
hot_to_cold_partition_count |
Jumlah partisi yang dipindahkan dari hot ke cold |
cold_to_hot_partition_count |
Jumlah partisi yang dipindahkan dari cold ke hot |
hot_to_cold_data_size |
Ukuran data yang dipindahkan dari hot ke cold. Satuan: byte |
cold_to_hot_data_size |
Ukuran data yang dipindahkan dari cold ke hot. Satuan: byte |
hot_data_size_before_change |
Ukuran data hot sebelum perubahan. Satuan: byte |
cold_data_size_before_change |
Ukuran data cold sebelum perubahan. Satuan: byte |
hot_data_size_after_change |
Ukuran data hot setelah perubahan. Satuan: byte |
cold_data_size_after_change |
Ukuran data cold setelah perubahan. Satuan: byte |
start_time |
Awal rentang waktu perubahan kebijakan penyimpanan |
update_time |
Akhir rentang waktu perubahan kebijakan penyimpanan |
progress |
Progres perubahan. Satuan: % |
status |
Status perubahan: INIT (belum dimulai), RUNNING (sedang berjalan), atau FINISH (selesai) |