All Products
Search
Document Center

Hologres:Liquid Table

Last Updated:Aug 11, 2026

Liquid Table adalah mode penyimpanan tabel yang diperkenalkan di Hologres V4.2.0, memungkinkan Anda mengubah Table Group tabel (dan karenanya jumlah shard-nya) secara online setelah pembuatan—tanpa perlu rebuild tabel, tanpa downtime, dan tanpa migrasi data manual.

Ikhtisar

Apa itu Liquid Table

Liquid Table adalah mode penyimpanan tabel baru di Hologres dengan kemampuan utama sebagai berikut:

Catatan

Menetapkan ulang tabel ke Table Group berbeda secara dinamis (yaitu, mengubah jumlah shard-nya) secara online setelah pembuatan, tanpa rebuild tabel, tanpa gangguan layanan, dan tanpa migrasi data manual.

Fitur ini mengatasi masalah lama pada gudang data tradisional, di mana penyesuaian granularitas shard setelah pertumbuhan data sangat mahal:

Masalah (mode tradisional)

Cara Liquid Table mengatasinya

Jumlah shard awal salah sehingga memerlukan rebuild penuh tabel

Jalankan ALTER TABLE ... SET (table_group = 'xxx') untuk mengubah secara online

Data menjadi dua kali lipat tetapi konkurensi kueri mencapai batas maksimum, memaksa migrasi

Skala keluar shard secara online; data didistribusikan ulang secara otomatis di latar belakang

Skala-masuk memerlukan rebuild tabel untuk mereklaim resource

Skala-masuk secara online; kompaksi latar belakang mengonsolidasi data ke dalam lebih sedikit shard

Waktu henti layanan selama operasi penskalaan

Baca dan tulis terus berjalan (latensi tulis mungkin melonjak sebentar; latensi baca tidak terpengaruh)

Kemampuan utama

  • Resharding Online: Gunakan ALTER TABLE untuk mengubah jumlah shard kapan saja, transparan bagi aplikasi.

  • Beberapa format penyimpanan: Mendukung kolom (column), berorientasi baris (row), dan hibrida (row,column).

  • Redistribusi data terkendali: Pilih antara redistribusi latar belakang otomatis atau melewati redistribusi untuk perpindahan metadata yang lebih cepat.

  • Kontrol jendela partisi: Batasi redistribusi hanya pada N hari/bulan partisi terbaru, mengurangi overhead I/O.

  • Kompatibilitas fitur luas: Berfungsi dengan Dynamic Table, GSI, indeks teks penuh, indeks vektor (HGraph), Time Travel (MVCC), Binlog, dan tabel partisi logis.

Kasus penggunaan khas

  1. Pertumbuhan data melampaui estimasi shard awal: Mulai dengan 16 shard, skala ke 64 enam bulan kemudian.

  2. Skala keluar sementara untuk event trafik: Tambahkan shard sebelum event penjualan untuk meningkatkan konkurensi kueri, lalu skala-masuk setelahnya untuk mereklaim resource.

  3. Manajemen partisi hot/cold: Skala-masuk partisi historis cold sambil mempertahankan partisi hot dalam skala keluar.

  4. Pencarian vektor AI dengan skalabilitas elastis: Skala dinamis tabel vektor seiring pertumbuhan volume recall; indeks tetap tersedia sepanjang proses.

Prasyarat

Instans Hologres Anda harus menjalankan V4.2.0 atau versi yang lebih baru. Untuk memeriksa versi instans Anda, lihat Daftar pernyataan SQL.

Memulai cepat

Buat Liquid Table

Tambahkan WITH (liquid_table = 'true') ke pernyataan CREATE TABLE Anda:

-- Penyimpanan kolom (default, untuk workload OLAP)
CREATE TABLE my_table (
    id   INT NOT NULL,
    name TEXT,
    ts   TIMESTAMPTZ,
    PRIMARY KEY(id)
) WITH (liquid_table = 'true');

-- Penyimpanan berorientasi baris (untuk pencarian titik / pembaruan frekuensi tinggi)
CREATE TABLE my_row_table (
    id   INT NOT NULL,
    name TEXT,
    PRIMARY KEY(id)
) WITH (liquid_table = 'true', orientation = 'row');

-- Penyimpanan hibrida (untuk workload campuran pencarian titik + OLAP)
CREATE TABLE my_hybrid_table (
    id   INT NOT NULL,
    name TEXT,
    PRIMARY KEY(id)
) WITH (liquid_table = 'true', orientation = 'row,column');

Ubah jumlah shard (Resharding)

Resharding dilakukan dengan menetapkan ulang tabel ke Table Group berbeda:

-- Buat Table Group target jika belum ada
CALL hg_create_table_group('tg_64', 64);

-- Skala keluar (berlaku secara sinkron)
ALTER TABLE my_table SET (table_group = 'tg_64');

-- Skala-masuk
ALTER TABLE my_table SET (table_group = 'tg_16');
Catatan

Perintah ALTER langsung mengembalikan respons begitu perpindahan metadata selesai. Tulisan dan kueri baru langsung menggunakan tata letak shard baru; data yang sudah ada didistribusikan ulang secara asinkron di latar belakang.

Verifikasi konfigurasi shard saat ini

-- Periksa Table Group dan jumlah shard untuk suatu tabel
SELECT property_key, property_value
FROM hologres.hg_table_properties
WHERE table_name = 'my_table'
AND property_key = 'table_group';

-- Periksa metadata Table Group
SELECT * FROM hologres.hg_table_group_properties
WHERE tablegroup_name = 'tg_64';

Referensi properti tabel

Properti saat pembuatan

Properti

Tipe

Default

Deskripsi

liquid_table

BOOLEAN

false

Mengaktifkan mode Liquid Table. Harus ditentukan saat pembuatan tabel; tidak dapat diaktifkan nanti melalui ALTER TABLE.

orientation

STRING

column

Format penyimpanan: column / row / row,column.

liquid_table_enable_data_reorganization

BOOLEAN

true

Apakah akan mendistribusikan ulang data yang sudah ada secara otomatis di latar belakang setelah Resharding.

liquid_table_reorganization_partition_window

STRING

Semua partisi

Batasi redistribusi hanya pada partisi dalam jendela waktu tertentu, misalnya '30 day' atau '12 month'. Hanya berlaku untuk tabel dengan satu kunci partisi bertipe waktu.

Memilih nilai yang tepat untuk liquid_table_enable_data_reorganization

Nilai

Perilaku

Paling cocok untuk

true (default)

Redistribusi latar belakang berjalan setelah Resharding, menimbulkan overhead I/O hingga selesai.

Tabel aktif berumur panjang di mana stabilitas performa kueri penting.

false

Tidak ada redistribusi latar belakang. Performa kueri pada data lama mungkin menurun.

Tabel yang akan segera diarsipkan atau dipotong; skenario sementara di mana penurunan performa ringan dapat diterima.

Catatan

Catatan performa untuk mode false: Hologres menggunakan oversharding internal hingga 8x untuk mengurangi kehilangan performa. Dalam skenario penskalaan tipikal 2–4x, dampaknya hampir nol. Namun, ketika faktor penskalaan jauh melebihi batas oversharding (misalnya 16x atau lebih), performa kueri data lama dapat menurun secara proporsional.

Contoh jendela partisi

-- Redistribusi hanya partisi 30 hari terakhir (memerlukan kunci partisi bertipe waktu)
ALTER TABLE order_log SET (
    table_group = 'tg_64',
    liquid_table_reorganization_partition_window = '30 day'
);

Ini ideal untuk tabel log atau fakta dengan retensi panjang di mana partisi historis cold jarang diakses—hanya partisi hot yang perlu didistribusikan ulang.

Kompatibilitas fitur

Matriks kompatibilitas (V4.2.0)

Kombinasi fitur

Didukung

Keterangan

Dynamic Table sebagai Liquid Table

Ya

Setelah Resharding, Dynamic Table menjalani rebuild penuh sekali dengan latensi refresh lebih lama, lalu melanjutkan komputasi inkremental.

Liquid Table sebagai tabel sumber untuk Dynamic Table

Ya

Setelah Resharding, Dynamic Table menjalani rebuild penuh sekali dengan latensi refresh lebih lama, lalu melanjutkan komputasi inkremental.

Global Secondary Index (GSI)

Ya

Tabel dengan GSI dapat di-reshard di V4.2.

Indeks terbalik teks penuh

Ya

Indeks tetap dapat digunakan setelah Resharding.

Indeks vektor (HGraph)

Ya

Indeks tetap dapat digunakan; hasil pencarian perkiraan tetap stabil.

Tabel partisi logis

Ya

Resharding didukung; partisi otomatis berfungsi normal.

Time Travel (MVCC)

Ya

Data historis tetap dapat dikueri setelah Resharding.

Binlog

Memerlukan GUC eksperimental

Memerlukan GUC eksperimental dan memiliki persyaratan khusus untuk konsumen downstream.

Tabel partisi fisik

Tidak

Gunakan tabel partisi logis sebagai gantinya.

Materialized view (MV)

Tidak

Mengonversi tabel yang sudah ada ke Liquid Table melalui ALTER

Tidak

Harus menggunakan pendekatan migrasi rebuild.

Pembacaan langsung MaxCompute terhadap Liquid Table

Tidak

Belum didukung.

Contoh koeksistensi indeks

-- Indeks teks penuh
CREATE INDEX ft_idx ON my_table USING FULLTEXT (content)
    WITH (tokenizer = 'jieba');

-- GSI (Global Secondary Index)
CREATE GLOBAL INDEX gsi_name ON my_table(name) INCLUDE (ts);

-- Indeks vektor (melalui properti vectors)
ALTER TABLE my_table SET (vectors = '{
    "embedding": {
        "algorithm": "HGraph",
        "distance_method": "Cosine"
    }
}');

Setelah membuat indeks pada Liquid Table, Anda dapat melakukan Resharding melalui ALTER TABLE ... SET (table_group = '...') secara langsung. Semua indeks tetap dapat digunakan pada shard baru secara otomatis.

Dampak Resharding terhadap workload

Catatan

Bagian ini wajib dibaca oleh pengembang gudang data dan DBA sebelum menjalankan ALTER TABLE ... SET (table_group = ...).

Resharding terdiri dari dua fase internal:

  1. Perpindahan metadata (sinkron): Perintah ALTER TABLE itu sendiri. Selesai dalam hitungan detik; topologi shard baru berlaku saat perintah mengembalikan respons.

  2. Redistribusi data (latar belakang asinkron): Memindahkan/mengompaksi data yang sudah ada dari shard lama ke shard baru. Durasi tergantung pada volume data, faktor penskalaan, dan I/O yang tersedia.

Penting

Sepanjang proses, baca dan tulis diharapkan terus berjalan tanpa kegagalan atau pemblokiran. Namun, latensi tulis dan performa kueri data lama akan terpengaruh secara nyata. Rencanakan jendela pemeliharaan dan strategi rollback Anda dengan asumsi dampak terlihat—jangan asumsikan dampak nol.

Rangkuman dampak

Dimensi

Fase perpindahan metadata (detik)

Fase redistribusi data (latar belakang asinkron)

Ketersediaan layanan

Tidak ada gangguan yang diharapkan

Tidak ada gangguan yang diharapkan

Kegagalan permintaan

Tidak ada kegagalan yang diharapkan (dalam kasus ekstrem, sejumlah kecil error transien mungkin terjadi — andalkan retry klien)

Tidak ada kegagalan yang diharapkan

Latensi tulis

Lonjakan yang teramati, biasanya milidetik hingga detik, berpotensi lebih lama dalam beberapa kasus

Mungkin sedikit meningkat karena kontensi I/O latar belakang

Throughput tulis

Penurunan yang teramati sebelum dan sesudah perpindahan

Sangat bergantung pada ruang I/O instans; mungkin dibatasi lajunya

Performa kueri data baru

Sebagian besar tidak terpengaruh

Sebagian besar tidak terpengaruh (sudah ditulis ke shard baru)

Performa kueri data lama

Mungkin menurun segera

Mungkin terus menurun hingga redistribusi selesai; penurunan bisa signifikan, tetapi skenario tipikal (misalnya penskalaan 2x) sebagian besar dapat menghindarinya

Ketersediaan indeks

Tetap tersedia

Tetap tersedia (performa mungkin terpengaruh oleh kontensi I/O yang mendasarinya)

Konsistensi transaksional

Dijamin

Dijamin

Catatan

Pernyataan "tidak ada gangguan yang diharapkan" dan "tidak ada kegagalan yang diharapkan" dalam tabel di atas menunjukkan perilaku dalam kondisi umum dan bukan jaminan absolut. Perilaku aktual bergantung pada spesifikasi instans, volume data, beban konkuren, dan faktor penskalaan. Kami sangat menyarankan melakukan latihan di lingkungan pengujian sebelum melakukan Resharding di produksi.

Dampak pada penulisan

1) Tulisan tidak diharapkan gagal, tetapi konfigurasikan retry klien. Selama perpindahan metadata, sejumlah kecil permintaan konkuren mungkin mengalami error transien (misalnya timeout koneksi). Konektor harus memiliki retry otomatis yang diaktifkan. Tidak akan ada ketidaktersediaan tulis yang berkepanjangan.

2) Latensi tulis akan mengalami lonjakan yang teramati—ini bukan "dampak nol". Tulisan yang sedang berjalan harus menunggu topologi baru berlaku. Lonjakan biasanya dalam kisaran milidetik hingga detik, tetapi mungkin lebih lama ketika:

  • Transaksi berdurasi panjang aktif pada tabel.

  • Pemanfaatan I/O instans sudah tinggi.

  • Faktor penskalaan sangat besar (misalnya 8 shard langsung ke 128 shard).

3) Selama fase redistribusi, tulisan tidak diblokir tetapi latensi mungkin sedikit meningkat.

  • Migrasi data latar belakang mengonsumsi I/O instans dan mungkin bersaing dengan tulisan foreground untuk resource.

  • Pada instans dengan pemanfaatan I/O tinggi, latensi tulis selama redistribusi mungkin sedikit lebih tinggi daripada kondisi stabil, dan throughput juga mungkin sedikit menurun.

  • Kami menyarankan terus memantau I/O instans dan metrik RT tulis selama fase redistribusi.

4) Untuk workload COPY / impor massal: mulai impor massal hanya setelah Resharding dan redistribusi benar-benar selesai. Mengimpor volume besar selama Resharding secara signifikan memperpanjang waktu redistribusi dan memperkuat fluktuasi latensi tulis.

Dampak terhadap kueri

1) Kueri tidak diharapkan gagal atau diblokir.

  • Selama perpindahan metadata, kueri baru dieksekusi terhadap topologi baru.

  • Kueri yang sedang berjalan selesai secara normal.

  • Dalam kasus langka, kueri yang dikeluarkan tepat pada saat perpindahan mungkin timeout karena pengalihan rute. Retry klien harus menangani hal ini.

2) Dampak latensi baca pada saat perpindahan biasanya minimal, tetapi tidak nol.

  • Dibandingkan dengan tulisan, jalur baca kurang terpengaruh oleh perpindahan.

  • Kueri yang mengenai momen perpindahan menjalani pengalihan rute; API real-time sensitif latensi mungkin mengamati jitter tingkat milidetik.

  • Untuk skenario kueri titik QPS tinggi, rencanakan pengaturan timeout upstream dengan asumsi jitter singkat akan terjadi.

3) Performa kueri data lama mungkin menurun secara signifikan hingga redistribusi selesai:

Skenario

Dampak performa kueri data lama

Skala keluar pangkat-dua dengan jumlah shard pangkat-dua (32 → 64)

Penurunan minimal karena optimasi oversharding internal

Skala keluar pangkat-dua tetapi jumlah shard bukan pangkat-dua (20 → 40)

Optimasi oversharding internal tetap berlaku, tetapi penurunan performa lebih besar daripada saat jumlah shard adalah pangkat-dua

Skala keluar bukan pangkat-dua atau bukan kelipatan bilangan bulat

Penurunan moderat, umumnya tidak lebih dari 2x

Skala keluar sangat besar (16x+ dari jumlah shard awal)

Menurun secara proporsional terhadap faktor_penskalaan/8; kasus terburuk: kueri efektif tidak dapat digunakan hingga redistribusi selesai

Skala-masuk kelipatan bilangan bulat (32 → 16)

Paralelisme kueri lebih rendah; penurunan performa ringan hingga moderat

Skala-masuk bukan kelipatan bilangan bulat, atau jumlah shard bukan pangkat-dua

Penurunan moderat, umumnya tidak lebih dari 2x

Catatan

Optimasi oversharding internal: Hologres secara asinkron menerapkan oversharding 8x pada data di latar belakang secara default. Ketika jumlah shard adalah pangkat-dua, tabel berikut menunjukkan kehilangan performa kueri yang diharapkan untuk data yang telah sepenuhnya di-overshard pada setiap faktor penskalaan.

Faktor penskalaan (k)

Kehilangan performa

Scale-in 50% (0,5x)

0%

1x

0%

1.5x (skala keluar 50%)

12.5%

2x

0%

2.5x

15%

3x

25%

4x

0%

5x

40%

6x

50%

7x

75%

8x

0%

Dalam kebanyakan kasus, data telah sepenuhnya di-overshard, sehingga skenario penskalaan tipikal (2x, 4x) memiliki kehilangan performa hampir nol. Namun, oversharding adalah mitigasi, bukan jaminan—

  • Jika jumlah shard bukan pangkat-dua, skenario penskalaan tipikal tetap mengalami kehilangan performa.

  • Ketika faktor penskalaan melebihi kapasitas oversharding (misalnya di atas 8x), oversharding tidak lagi dapat mencegah kehilangan performa secara efektif.

  • Ketika volume data per shard terlalu kecil, optimasi oversharding mungkin tidak diterapkan.

  • Di bawah tekanan tulis berat, sebagian besar data yang baru ditulis mungkin belum menerapkan oversharding.

  • Ketika distribusi data atau pemilihan kunci shard suboptimal, penurunan performa mungkin tetap signifikan.

  • Jangan mengandalkan oversharding sebagai jaminan penurunan nol.

4) Kueri pada data yang baru ditulis sebagian besar tidak terpengaruh.

  • Data baru ditulis ke topologi shard baru; performa kueri konsisten dengan kondisi stabil.

  • Namun, jika kueri mencakup data baru dan lama (misalnya pemindaian rentang waktu), RT keseluruhan tetap ditarik turun oleh performa data lama yang menurun.

5) Kueri indeks (GSI / teks penuh / vektor) tetap berfungsi tetapi mungkin tidak memiliki performa stabil. Indeks tetap dapat digunakan setelah Resharding, tetapi I/O fisik untuk pencarian indeks mungkin bersaing dengan redistribusi latar belakang, menyebabkan waktu respons meningkat hingga redistribusi selesai. Pantau kueri P99 dan ekor panjang secara ketat.

Rekomendasi untuk workload sensitif latensi

Jika workload Anda termasuk dalam kategori berikut, perlakukan Resharding sebagai perubahan berisiko dan ikuti proses manajemen perubahan Anda:

Jenis workload

Mitigasi yang direkomendasikan

Dasbor real-time / kueri BI ad-hoc

Eksekusi selama jam sepi; pilih penskalaan pangkat-dua; koordinasikan dengan pemangku kepentingan mengenai jendela pemeliharaan.

Pencarian titik online (API CRM / kontrol risiko / akun)

Tabel berorientasi baris memiliki dampak Resharding lebih rendah—pilih untuk kasus penggunaan ini. Tingkatkan timeout klien; siapkan strategi degradasi (pembatasan laju, fallback cache).

Konsumen Binlog

Ikuti prosedur khusus Binlog dalam dokumen ini; beri tahu semua konsumen downstream untuk melakukan restart tanpa status; beri waktu agar konsumen dapat mengejar ketinggalan.

Pekerjaan UPSERT frekuensi tinggi

Eksekusi secara ketat selama jam sepi; pilih faktor penskalaan pangkat-dua.

Laporan OLAP kritis SLA

Nilai perkiraan penurunan performa kueri sebelum melanjutkan; pertimbangkan membagi menjadi beberapa langkah penskalaan lebih kecil jika perlu.

Perkiraan durasi dampak (konservatif)

Fase

Perkiraan durasi konservatif

Cakupan dampak

Perpindahan metadata

Detik; mungkin memakan waktu menit jika menunggu transaksi panjang

Lonjakan latensi tulis yang teramati; beberapa permintaan mungkin perlu retry

Redistribusi (tabel kecil <100 GB)

Puluhan menit

Penurunan performa kueri data lama berkelanjutan; tulisan mungkin terpengaruh oleh kontensi I/O

Redistribusi (tabel menengah 100 GB – 1 TB)

Jam hingga setengah hari

Penurunan performa kueri data lama berkelanjutan; jadwalkan selama jam sepi

Redistribusi (tabel besar >1 TB)

Satu hari atau lebih; berpotensi beberapa hari

Penurunan performa kueri data lama berkepanjangan; sangat disarankan menggunakan liquid_table_reorganization_partition_window untuk membatasi cakupan, atau membagi menjadi beberapa langkah penskalaan lebih kecil

Kesimpulan

Penting

Resharding menjaga layanan tetap berjalan dan permintaan berhasil, tetapi rencanakan untuk dampak yang teramati: latensi tulis akan melonjak (milidetik hingga detik, berpotensi lebih lama dalam kasus ekstrem); performa kueri data lama menurun hingga redistribusi selesai—tingkat keparahan berkorelasi dengan faktor penskalaan dan apakah itu kelipatan pangkat-dua; dalam kasus terburuk, penurunan mungkin berlangsung lama; dalam skenario tipikal (penskalaan 2x), optimasi oversharding internal sebagian besar dapat mengurangi dampak.

Pertimbangan khusus Binlog (penting)

Penting

Jika Liquid Table Anda memiliki Binlog diaktifkan (binlog_level = 'replica'), perilaku Resharding berbeda dari tabel biasa. Baca seluruh bagian ini sebelum melanjutkan.

Perilaku default

Liquid Table dengan Binlog diaktifkan tidak mengizinkan Resharding secara default. Menjalankan ALTER TABLE ... SET (table_group = ...) secara langsung mengembalikan error.

Prosedur Resharding paksa

-- Langkah 1: Aktifkan GUC eksperimental (hanya tingkat sesi)
SET hg_experimental_enable_liquid_resharding_for_table_with_binlog = on;

-- Langkah 2: Lakukan Resharding
ALTER TABLE my_binlog_table SET (table_group = 'tg_64');

-- Langkah 3: Bersihkan data delta pada shard lama
CALL hg_liquid_resharding_drop_non_current_delta('my_binlog_table');

Dampak terhadap konsumen Binlog

Event

Deskripsi

Selama Resharding

Konsumen Binlog (konektor) akan mengalami error dan memicu failover. Namun, offset menjadi tidak valid dan pekerjaan memasuki keadaan tidak dapat digunakan.

Setelah skala keluar (jumlah shard meningkat)

Failover kemungkinan berhasil, tetapi status tidak andal — diperlukan restart tanpa status.

Setelah skala-masuk (jumlah shard berkurang)

Failover akan selalu gagal.

Setelah Resharding selesai

Semua konsumen harus melakukan restart tanpa status (reset offset dan konsumsi ulang dari awal).

Kueri Binlog berbasis SQL

Hanya entri Binlog yang dihasilkan setelah Resharding terbaru yang terlihat; entri historis hilang.

Penting

Daftar periksa DBA: 1) Beri tahu semua konsumen downstream Binlog (Flink / konektor / subscriber kustom); 2) Selama jendela pemeliharaan: hentikan sementara konsumen → lakukan Resharding → panggil prosedur pembersihan → restart semua konsumen tanpa status; 3) Jangan pernah melakukan reshard pada Liquid Table yang diaktifkan Binlog tanpa mengoordinasikan dengan konsumen downstream.

Migrasi tabel yang sudah ada ke Liquid Table

Tabel yang sudah ada tidak dapat dikonversi ke Liquid Table melalui ALTER. Gunakan salah satu dari dua pendekatan berikut.

Pendekatan 1: Konversi melalui REBUILD (direkomendasikan)

Mulai dari Hologres V4.2, Anda dapat menggunakan ASYNC REBUILD TABLE untuk merebuild tabel yang sudah ada menjadi Liquid Table di tempat, tanpa tabel baru, tanpa migrasi data manual, dan nama tabel tidak berubah. Untuk detail tentang REBUILD, lihat REBUILD.

-- Konversi tabel yang sudah ada menjadi Liquid Table di tempat (nama tabel tidak berubah)
ASYNC REBUILD TABLE my_table
SET (
    liquid_table = 'true'
);

Pendekatan 2: Migrasi tabel baru

Buat Liquid Table baru, migrasikan data dari tabel yang sudah ada, dan alihkan menggunakan rename transaksional atomik.

-- 1. Buat Liquid Table baru dengan skema yang sama
CREATE TABLE my_table_new (
    id   INT NOT NULL,
    name TEXT,
    ts   TIMESTAMPTZ,
    PRIMARY KEY(id)
) WITH (liquid_table = 'true');

-- 2. Salin data
INSERT INTO my_table_new SELECT * FROM my_table_old;

-- 3. Buat ulang indeks (jika ada)
CREATE INDEX ... ON my_table_new ...;

-- 4. Pertukaran atomik menggunakan transaksi
BEGIN;
ALTER TABLE my_table_old RENAME TO my_table_bak;
ALTER TABLE my_table_new RENAME TO my_table;
COMMIT;

-- 5. Hapus cadangan setelah verifikasi
DROP TABLE my_table_bak;

Batasan

  • Diperlukan Hologres V4.2.0 atau versi yang lebih baru. Tingkatkan instans Anda terlebih dahulu jika Anda menjalankan versi sebelumnya.

  • Properti liquid_table hanya dapat diatur saat pembuatan tabel. Tabel reguler yang sudah ada tidak dapat dikonversi ke Liquid Table melalui ALTER TABLE. Gunakan pendekatan migrasi rebuild sebagai gantinya.

  • Tabel partisi fisik tidak didukung. Mencoba menggunakan sintaks partisi fisik pada Liquid Table mengembalikan error Physical partitioned table of liquid table is not supported. Gunakan tabel partisi logis sebagai gantinya.

  • Materialized view tidak dapat dibuat pada Liquid Table. Gunakan Dynamic Table sebagai alternatif.

  • Pembacaan langsung MaxCompute terhadap Liquid Table belum didukung. Jika downstream Anda bergantung pada pembacaan langsung MaxCompute, Liquid Table tidak berlaku di versi saat ini.

  • Instans yang berisi Liquid Table tidak dapat diturunkan spesifikasinya ke versi yang tidak mendukung fitur ini. Pastikan Anda tidak perlu melakukan rollback versi instans sebelum membuat Liquid Table.

  • Selama Resharding (perubahan Table Group), latensi tulis akan mengalami lonjakan yang teramati (milidetik hingga detik, berpotensi lebih lama dalam kasus ekstrem) dan performa kueri data lama mungkin menurun secara signifikan.

  • ALTER TABLE ... SET (table_group = ...) harus menunggu semua operasi DML yang sedang berjalan pada tabel selesai sebelum eksekusi dimulai. Operasi DML panjang atau transaksi terbuka akan memblokir perintah ALTER.

  • Parameter liquid_table_reorganization_partition_window hanya berfungsi dengan satu kunci partisi bertipe waktu. Beberapa kunci partisi atau kunci partisi non-bertipe waktu tidak didukung.

  • Liquid Table dengan Binlog diaktifkan tidak dapat di-reshard secara default. Anda harus mengaktifkan GUC eksperimental hg_experimental_enable_liquid_resharding_for_table_with_binlog dan memastikan konsumen Binlog downstream dapat mentoleransi restart tanpa status.

  • Setelah Resharding, kueri Binlog berbasis SQL hanya mengembalikan entri yang dihasilkan sejak Resharding terbaru. Binlog historis tidak lagi terlihat.

  • Table Group tidak dapat dihapus selama masih ada tabel yang terhubung padanya.

  • Resharding adalah operasi tidak dapat dibalik—setelah perpindahan metadata selesai, tidak ada pintasan "rollback". Untuk mengembalikan, Anda harus menjalankan ALTER lagi untuk memindahkan tabel ke Table Group asli.

  • Versi saat ini tidak menyediakan antarmuka kueri progres Resharding. Tidak ada cara untuk memeriksa persentase pasti redistribusi data secara real time.

Praktik terbaik

Kapan mengaktifkan Liquid Table

Sangat direkomendasikan:

  • Volume data diperkirakan tumbuh 5x atau lebih selama masa pakai tabel.

  • Trafik memiliki lonjakan musiman atau event penjualan yang memerlukan penskalaan shard elastis.

  • Tabel fakta inti atau tabel lebar dalam gudang data real-time.

  • Tabel pencarian vektor AI.

Dapat ditunda:

  • Tabel dimensi kecil dengan volume data stabil.

  • Workload yang bergantung pada tabel partisi fisik.

  • Workload yang bergantung pada pembacaan langsung MaxCompute.

Pedoman perencanaan jumlah shard

Data per shard

Tindakan yang direkomendasikan

< 10 GB

Mungkin terlalu banyak shard; pertimbangkan skala-masuk

10 GB – 50 GB

Kisaran sehat

50 GB – 100 GB

Pantau performa kueri; siapkan untuk skala keluar

> 100 GB

Segera lakukan scale out

Kiat eksekusi Resharding

  1. Jalankan selama jam sepi: Eksekusi ALTER selama jendela pemeliharaan dengan trafik rendah.

  2. Hentikan sementara DML besar: Pastikan tidak ada pekerjaan INSERT/UPDATE/DELETE massal yang berjalan.

  3. Pilih kelipatan pangkat-dua: misalnya 16 → 32 → 64 menghasilkan performa lebih lancar daripada 16 → 50.

  4. Gunakan jendela partisi untuk tabel besar: Atur liquid_table_reorganization_partition_window untuk membatasi cakupan redistribusi pada tabel partisi berumur panjang.

  5. Lakukan latihan end-to-end untuk tabel Binlog: Uji alur lengkap Resharding + restart downstream di lingkungan staging terlebih dahulu.

Rekomendasi pemantauan

  • Sebelum redistribusi selesai: bandingkan secara berkala waktu respons kueri di shard lama dan baru untuk mengukur progres.

  • Pemanfaatan resource instans: Resharding menimbulkan overhead I/O tambahan—pantau penggunaan CPU dan I/O.

  • Lag kursor Binlog: untuk tabel yang diaktifkan Binlog, pantau lag konsumen downstream.

FAQ

P1: Apa perbedaan mendasar antara Liquid Table dan tabel reguler?

J: Liquid Table menggunakan model penyimpanan base + delta yang memungkinkan tata letak shard berubah tanpa menulis ulang semua data. Tabel reguler memiliki distribusi shard yang tetap saat pembuatan—mengubah shard memerlukan rebuild penuh tabel.

P2: Apakah Resharding dapat menyebabkan kehilangan data?

J: Tidak. Permintaan baca dan tulis mempertahankan konsistensi transaksional sepanjang Resharding. Semua data yang telah dikomit dipertahankan. Pengujian verifikasi mengonfirmasi integritas data 100% sebelum dan sesudah Resharding.

P3: Apakah Resharding menyebabkan downtime layanan?

J: Layanan tetap tersedia sepanjang Resharding dan permintaan tidak diharapkan gagal. Namun, latensi tulis akan mengalami lonjakan yang teramati (milidetik hingga detik), dan performa kueri data lama mungkin menurun hingga redistribusi selesai. Lihat bagian "Dampak Resharding terhadap workload" untuk detailnya.

Q4: Berapa lama waktu yang dibutuhkan untuk resharding?

J: Perintah ALTER TABLE itu sendiri mengembalikan respons dalam hitungan detik (perpindahan metadata sinkron). Redistribusi data aktual berjalan secara asinkron di latar belakang, dengan durasi sebanding dengan volume data dan faktor penskalaan.

P5: Apakah sebuah tabel dapat di-reshard berkali-kali?

J: Ya. Namun, setiap Resharding memicu putaran redistribusi latar belakang baru. Rencanakan jumlah shard target Anda dengan hati-hati untuk menghindari perubahan yang sering.

P6: Bisakah saya memantau progres Resharding?

J: Versi saat ini tidak menyediakan API progres khusus. Anda dapat menyimpulkan progres dengan memantau tugas kompaksi latar belakang dan waktu respons kueri. Kemampuan ini ada dalam roadmap produk.

P7: Apakah skala-masuk langsung membebaskan storage?

J: Skala-masuk mengonsolidasi data ke dalam lebih sedikit shard segera, tetapi ruang penyimpanan sebenarnya baru diklaim kembali setelah kompaksi latar belakang selesai.

P8: Apakah Liquid Table menimbulkan overhead penyimpanan tambahan?

J: Model base + delta mungkin memiliki overhead minor selama data delta belum dikompaksi. Kompaksi latar belakang menghilangkan ini secara otomatis. Penggunaan penyimpanan keseluruhan sebanding dengan tabel reguler.

P9: Bisakah beberapa jenis indeks (GSI + teks penuh + vektor) koeksistensi pada satu Liquid Table?

J: Ya. V4.2 mendukung Resharding Liquid Table yang memiliki beberapa jenis indeks secara bersamaan.

P10: Dapatkah saya mengonversi kembali Liquid Table menjadi tabel biasa?

J: Ya, melalui rebuild terbalik: buat tabel reguler, gunakan INSERT INTO ... SELECT untuk migrasi data, lalu RENAME untuk menukar. Perhatikan bahwa setelah instans berisi Liquid Table, instans tersebut tidak dapat diturunkan spesifikasinya ke versi yang tidak mendukung fitur ini.

Referensi cepat

-- Buat Liquid Table
CREATE TABLE t (...) WITH (liquid_table = 'true');

-- Resharding
ALTER TABLE t SET (table_group = 'tg_xxx');

-- Nonaktifkan redistribusi latar belakang
ALTER TABLE t SET (liquid_table_enable_data_reorganization = 'false');

-- Redistribusi hanya partisi 30 hari terakhir
ALTER TABLE t SET (
    table_group = 'tg_xxx',
    liquid_table_reorganization_partition_window = '30 day'
);

-- Reshard tabel yang diaktifkan Binlog (eksperimental; memerlukan restart downstream)
SET hg_experimental_enable_liquid_resharding_for_table_with_binlog = on;
ALTER TABLE t SET (table_group = 'tg_xxx');
CALL hg_liquid_resharding_drop_non_current_delta('t');