全部产品
Search
文档中心

Hologres:Penyimpanan Bertingkat

更新时间:Feb 28, 2026

Hologres V1.3.37 dan versi yang lebih baru mendukung penyimpanan bertingkat untuk data panas dan dingin guna membantu Anda mengelola tingkatan data secara efektif. Topik ini menjelaskan cara menggunakan penyimpanan bertingkat.

Pengenalan Fungsi

Hologres menyediakan dua jenis penyimpanan: Standard dan Infrequent Access.

  • Penyimpanan Standard menggunakan hot storage berbasis SSD penuh. Ini merupakan jenis penyimpanan default di Hologres dan memenuhi kebutuhan akses data berlatensi rendah serta berkinerja tinggi. Untuk sebagian besar skenario, penyimpanan Standard adalah opsi yang paling efektif dan hemat biaya.

  • Penyimpanan Infrequent Access menggunakan cold storage berbasis HDD penuh. Jenis ini memenuhi kebutuhan penyimpanan berbiaya rendah untuk data yang jarang diakses dan cocok untuk set data yang sangat besar yang tidak sensitif terhadap latensi atau jarang diakses.

  • Untuk instans primary/secondary, lakukan upgrade ke Hologres V1.3.55 atau versi yang lebih baru untuk mengaktifkan cold storage.

Hologres juga mendukung penyimpanan bertingkat tingkat tabel. Anda dapat menetapkan media penyimpanan untuk tabel anak partisi secara dinamis menggunakan fitur CREATE PARTITION TABLE.

Mulai dari Hologres V2.1, akselerasi cache berbasis SSD didukung untuk meningkatkan kecepatan akses cold storage. Saat ini hanya ruang cache yang dialokasikan secara default yang didukung. Akselerasi cache diaktifkan secara default dan meningkatkan kinerja akses lebih dari dua kali lipat.

Prasyarat

  • Hanya Hologres V1.3.37 dan versi yang lebih baru yang mendukung penyimpanan bertingkat data panas dan dingin. Jika instans Anda menjalankan versi sebelumnya, gunakan panduan Common upgrade preparation failure errors atau bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi selengkapnya, lihat How do I get more online support?.

  • Untuk instansi subscription yang menjalankan versi sebelumnya, kuota penyimpanan Infrequent Access secara default bernilai 0 GB setelah melakukan upgrade ke Hologres V1.3.37.

Catatan

  • Penyimpanan tabel Hologres terdiri dari Data dan Meta. Data menyimpan data pengguna Anda, sedangkan Meta menyimpan metadata tabel. Dalam penyimpanan bertingkat, Anda hanya dapat menetapkan media penyimpanan untuk bagian Data. Karena alasan kinerja, Meta selalu disimpan di hot storage. Oleh karena itu, meskipun Anda menetapkan kebijakan penyimpanan tabel ke cold storage, tetap akan mengonsumsi sejumlah kecil hot storage dan dikenakan biaya hot storage yang minimal.

  • Untuk menghindari dampak pada layanan Anda, tugas migrasi data dari hot ke cold dijalankan dengan prioritas rendah. Setelah Anda mengubah kebijakan penyimpanan Data suatu tabel, perubahan tersebut tidak langsung berlaku. Hologres melakukan migrasi data secara asinkron di latar belakang. Secara default, migrasi dimulai pada tengah malam. Mulai dari Hologres V2.2, Anda dapat menyesuaikan waktu migrasi. Untuk informasi selengkapnya, lihat Dynamic partition management.

  • Saat menulis data baru ke tabel cold storage, data awalnya ditulis ke hot storage. Tugas latar belakang secara asinkron memindahkannya ke cold storage, sehingga menimbulkan biaya hot storage tertentu.

  • Karena keterbatasan waktu pencarian (seek time) disk, jangan gunakan tabel cold storage untuk skenario kueri titik seperti tabel dimensi Flink atau skenario serving. Tabel cold storage mendukung throughput baca yang dua orde lebih rendah dibandingkan tabel hot storage.

  • Jangan menetapkan tabel berorientasi baris untuk menggunakan cold storage.

  • Selama konversi batch data dari hot ke cold, semua tablet tabel dibuka, sehingga meningkatkan penggunaan memori. Konversikan maksimal 200 tabel sekaligus.

Buat Tabel Penyimpanan Bertingkat

Saat membuat tabel, tentukan kebijakan penyimpanan data dengan mengatur parameter storage_mode dalam SET_TABLE_PROPERTY. Untuk informasi selengkapnya, lihat CREATE TABLE.

Tabel non-partisi

Tetapkan kebijakan penyimpanan untuk tabel non-partisi

Untuk tabel non-partisi, gunakan SET_TABLE_PROPERTY untuk menetapkan kebijakan penyimpanan. Opsi yang didukung adalah:

  • hot (hot storage).

  • cold (cold storage).

Sebagai contoh, untuk menetapkan tbl1 menggunakan cold storage, jalankan kode berikut:

-- Tentukan cold storage saat membuat tabel
BEGIN;
CREATE TABLE tbl1 (
 "id" INT NOT NULL,
 "name" TEXT NOT NULL
);
CALL set_table_property('tbl1', 'storage_mode', 'cold');
COMMIT;

Ubah media penyimpanan untuk tabel non-partisi

Hologres mendukung perubahan media penyimpanan setelah pembuatan tabel. Sebagai contoh, mengubah tbl1 ke hot storage akan menyebabkan sistem memindahkan data secara asinkron ke hot storage. Contoh:

-- Ubah media penyimpanan ke hot storage setelah pembuatan tabel
CALL set_table_property('tbl1', 'storage_mode', 'hot');

Tabel partisi

Tetapkan kebijakan penyimpanan untuk tabel partisi

Tabel partisi juga menggunakan SET_TABLE_PROPERTY untuk menetapkan kebijakan penyimpanan. Partisi anak secara default mewarisi properti penyimpanan tabel induk, tetapi juga dapat diatur secara individual. Opsi yang didukung adalah:

  • hot (hot storage).

  • cold (cold storage).

Sebagai contoh, menetapkan tabel partisi induk (tbl2) ke cold storage menyebabkan semua partisi anaknya (seperti tbl2_v1) menggunakan cold storage. Kode:

-- Tentukan cold storage saat membuat tabel
BEGIN;
CREATE TABLE tbl2(
  c1 TEXT NOT NULL,
  c2 TEXT
)
PARTITION BY LIST(c2);
CALL set_table_property('tbl2', 'storage_mode', 'cold');
CREATE TABLE tbl2_v1 PARTITION OF tbl2 FOR VALUES IN ('v1');
COMMIT;

Modifikasi penyimpanan untuk tabel partisi

Hologres mendukung perubahan media penyimpanan setelah pembuatan tabel. Sebagai contoh, mengubah tabel partisi induk tbl2 ke hot storage menyebabkan semua partisi anaknya dipindahkan secara asinkron ke hot storage. Contoh:

-- Ubah kebijakan penyimpanan ke hot storage setelah pembuatan tabel
CALL set_table_property('tbl2', 'storage_mode', 'hot');

Untuk menetapkan partisi anak tertentu ke cold storage, ubah properti storage_mode partisi tersebut. Sistem segera memulai migrasi partisi tersebut ke cold storage. Contoh:

-- Buat beberapa partisi anak

CREATE TABLE tbl2_v2 PARTITION OF tbl2 FOR VALUES IN ('v2');
CREATE TABLE tbl2_v3 PARTITION OF tbl2 FOR VALUES IN ('v3');

-- Kueri properti tabel; saat ini masih mewarisi pengaturan hot storage dari induk

SELECT * FROM hg_table_storage_status('public', 'tbl2');

-- Ubah partisi anak ke cold storage

CALL set_table_property('tbl2_v3', 'storage_mode', 'cold');
                

Kelola Media Penyimpanan Tabel Partisi Secara Dinamis

Untuk mengelola media penyimpanan partisi secara cerdas, gunakan partisi dinamis untuk menetapkan aturan transformasi data dari hot ke cold. Hal ini memungkinkan penyimpanan bertingkat cerdas yang secara efektif menyeimbangkan biaya dan kinerja. Untuk informasi selengkapnya tentang manajemen partisi dinamis, lihat Dynamic partition management.

Kueri Status Media Penyimpanan

Panggil fungsi hg_table_storage_status untuk memeriksa status penyimpanan tabel. hg_table_storage_status hanya menampilkan ukuran penyimpanan data, tidak termasuk ukuran penyimpanan Meta. Penggunaan:

SELECT * FROM hg_table_storage_status('<schema_name>', '<table_name>');

Parameter

Deskripsi

schema_name

Nama schema tabel

table_name

Nama tabel

Hasil berikut dikembalikan:

Nama Kolom

Isi

table_name

  • Tabel non-partisi: nama tabel

  • Tabel partisi induk: nama partisi anak. Mengembalikan beberapa baris, satu per partisi anak

  • Tabel partisi anak: nama partisi anak

hot_size

Ukuran hot storage dalam byte

cold_size

Ukuran cold storage dalam byte

status

Status:

  • hot: data berada di hot storage

  • cold: data berada di cold storage

  • transferring: data sedang dimigrasikan

Contoh:

-- Tabel non-partisi
SELECT * FROM hg_table_storage_status('public', 'tbl1');-- mengembalikan ukuran dalam byte
 table_name | hot_size |   cold_size   | status
------------+----------+---------------+--------
 tbl1       |  145643  |      3685     | transferring

-- Tabel partisi induk
SELECT * FROM hg_table_storage_status('public', 'tbl2');-- mengembalikan ukuran dalam byte
   table_name    | hot_size | cold_size | status
-----------------+----------+-----------+--------
 tbl2_2022062222 |        0 |         0 | hot
 tbl2_2022062221 |     1125 |         0 | hot
 tbl2_2022062220 |     1245 |         0 | hot
 tbl2_2022062219 |     1358 |         0 | hot
 tbl2_2022062218 |        0 |      1875 | cold
 tbl2_2022062217 |        0 |      1143 | cold
 tbl2_2022062216 |        0 |      1299 | cold

Kueri Frekuensi Akses Tabel

Mulai dari Hologres V1.3.37, tabel sistem log hologres.hg_table_info mengumpulkan statistik harian tentang tabel dalam suatu instans. Gunakan data ini untuk melihat dan menganalisis informasi tabel guna optimasi yang tepat sasaran. Untuk informasi selengkapnya, lihat View and analyze table statistics. Kueri tabel ini untuk mendapatkan volume hot/cold storage, frekuensi akses tabel, dan frekuensi akses partisi guna memutuskan apakah akan melakukan konversi data dari hot ke cold. Contoh kueri:

Tabel non-partisi

SELECT a.table_name,
       (a.total_read_count - b.total_read_count) AS read_count,
       (a.total_write_count - b.total_write_count) AS write_count,
       a.hot_storage_size
FROM (SELECT * FROM hologres.hg_table_info
      WHERE type='TABLE' AND collect_time::DATE = CURRENT_DATE - interval '1 day') a
JOIN
    (SELECT * FROM hologres.hg_table_info
    WHERE type='TABLE' AND collect_time::DATE = CURRENT_DATE - interval '${days} day') b
ON a.table_name = b.table_name
ORDER BY hot_storage_size DESC;

Tabel partisi

Kueri semua partisi:

SELECT parent_table_name,COUNT(*) AS partition_cnt, 
       sum(hot_storage_size)/1024/1024/1024 AS hot_size_gb 
FROM hologres.hg_table_info
WHERE type = 'PARTITION' AND collect_time::DATE = CURRENT_DATE - interval '1 day'
GROUP BY parent_table_name
ORDER BY hot_size_gb DESC;