All Products
Search
Document Center

Lindorm:ALTER TABLE

Last Updated:Jul 11, 2026

Pernyataan ALTER TABLE memodifikasi skema tabel, seperti menambahkan atau menghapus kolom serta mengatur atribut tabel. Klausul yang didukung berbeda antara LindormTable dan LindormTSDB.

Mesin dan versi

Pernyataan ALTER TABLE berlaku untuk LindormTable dan LindormTSDB tanpa batasan versi.

Catatan penggunaan

Operasi ALTER TABLE bersifat non-locking. Tabel tetap dapat dibaca dan ditulis selama operasi berlangsung. Namun, Anda mungkin mengalami error timeout atau fluktuasi kinerja singkat karena alasan berikut:

  • Selama operasi DDL, setiap shard ditutup dan dibuka kembali secara singkat untuk memuat ulang metadata. Proses ini biasanya memakan waktu 10 hingga beberapa ratus milidetik. Jika permintaan mengarah ke shard yang sedang dibuka kembali, Anda mungkin mengalami penundaan kecil atau fluktuasi kinerja singkat. Disarankan menjalankan operasi DDL selama jam sepi.

  • Hasil operasi DDL baru dikembalikan setelah perubahan diterapkan ke semua shard. Untuk tabel besar, hal ini dapat menyebabkan timeout di sisi klien jika timeout klien terlalu singkat. Operasi tersebut tetap berjalan di server hingga selesai.

Sintaksis

alter_table_statement   ::= ALTER TABLE table_name alter_table_instruction

alter_table_instruction ::=   
  add_column_list
  | DROP COLUMN [ IF EXISTS ] column_name
  | SET table_options
  | COMPACT (idcName)?
   
add_column_list ::= ADD [COLUMN] column_def ( ',' ADD [COLUMN] column_def )*
column_def ::= column_name type [TAG]

Perbedaan mesin

Pernyataan ALTER TABLE berbeda antara LindormTable dan LindormTSDB. Tabel berikut membandingkan klausul yang didukung.

Klausul

LindormTable

LindormTSDB

ADD COLUMN

Didukung

Didukung

COMPACT

Didukung

Catatan

Didukung di LindormTable 2.3.4 dan versi lebih baru.

Tidak didukung

DROP COLUMN

Didukung

Catatan

Didukung di LindormTable 2.6.6 dan versi lebih baru.

Tidak didukung

SET table_options

Didukung

Tidak didukung

Klausul

ADD COLUMN

Baik LindormTable maupun LindormTSDB mendukung klausul ADD COLUMN.

Aturan berikut berlaku saat menambahkan kolom:

  • Anda tidak dapat menambahkan kolom sebagai primary key.

  • Untuk LindormTSDB, Anda hanya dapat menambahkan kolom tag atau kolom field. Kolom timestamp tidak dapat ditambahkan.

DROP COLUMN

Klausul DROP COLUMN hanya tersedia di LindormTable 2.6.6 dan versi lebih baru.

Catatan

Jika Anda tidak dapat melakukan upgrade instans ke versi 2.6.6 atau lebih baru melalui Konsol, hubungi dukungan teknis Lindorm (ID DingTalk: s0s3eg3).

Operasi DROP COLUMN bersifat asinkron. Setelah pernyataan ALTER TABLE berhasil, sistem langsung menghapus kolom target, tetapi data kolom tersebut belum dibersihkan hingga operasi COMPACT selesai. Untuk mempercepat pembersihan data, Anda dapat menjalankan operasi FLUSH dan COMPACT secara manual. Anda tidak dapat menambahkan kolom dengan nama yang sama hingga data sepenuhnya dibersihkan. Untuk informasi lebih lanjut, lihat FAQ.

SET table_options

Hanya LindormTable yang mendukung klausul SET table_options.

Untuk daftar atribut tabel, lihat Atribut tabel. Anda dapat menggunakan pernyataan SHOW TABLE VARIABLES untuk memverifikasi bahwa atribut tabel telah berhasil diatur. Untuk informasi lebih lanjut, lihat SHOW TABLE VARIABLES.

Penting

Saat memodifikasi atribut MUTABILITY dan CONSISTENCY, perhatikan hal berikut:

  • Sebelum membuat indeks, Anda dapat memodifikasi kedua atribut MUTABILITY dan CONSISTENCY.

  • Setelah membuat indeks:

    • Anda tidak dapat memodifikasi MUTABILITY.

    • Anda dapat mengubah nilai CONSISTENCY dari eventual menjadi strong, tetapi tidak dapat mengubahnya dari strong menjadi eventual.

Untuk contoh, lihat Aktifkan kolom dinamis.

COMPACT

Hanya LindormTable 2.3.4 dan versi lebih baru yang mendukung klausul COMPACT, yang memicu major compaction.

Menjalankan major compaction menggabungkan file data, membersihkan data yang dihapus atau kedaluwarsa, melepaskan ruang disk, dan meningkatkan kinerja baca/tulis. Operasi ini membutuhkan banyak resource.

  • Jika Anda tidak menentukan idcName:

    • Untuk instans single-zone yang hanya memiliki satu IDC, menentukan idcName tidak berpengaruh.

    • Untuk instans multi-zona yang memiliki dua IDC, aturan berikut berlaku jika Anda tidak menentukan idcName:

      • Jika versi LindormTable Anda lebih awal dari 2.6.4.2, major compaction hanya dijalankan pada idc1.

      • Jika versi LindormTable Anda 2.6.4.2 atau lebih baru, major compaction dijalankan pada semua IDC secara default.

  • Jika Anda menentukan idcName, major compaction dijalankan pada IDC yang ditentukan. Anda dapat menentukan beberapa nama IDC, dipisahkan dengan koma (,).

Untuk contoh, lihat Jalankan major compaction.

Contoh

Contoh dalam bagian ini menggunakan tabel sensor yang dibuat dengan pernyataan berikut dari topik CREATE TABLE:

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time BIGINT NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
);

Tambahkan kolom

Tambahkan kolom baru n1 ke tabel sensor.

ALTER TABLE sensor ADD COLUMN n1 DOUBLE;

Tambahkan kolom spasial-temporal ke tabel data spasial-temporal roads.

  • Tambahkan satu kolom spasial.

    ALTER TABLE roads ADD COLUMN g2 GEOMETRY(LINESTRING);
  • Tambahkan beberapa kolom spasial.

    ALTER TABLE roads ADD COLUMN g2 GEOMETRY(LINESTRING), g3 GEOMETRY(POLYGON);

Hapus kolom

Hapus kolom n1 dari tabel sensor.

ALTER TABLE sensor DROP COLUMN IF EXISTS n1;

Verifikasi hasil

Jalankan pernyataan berikut untuk memverifikasi hasil:

DESCRIBE table sensor;

Aktifkan kolom dinamis

Aktifkan fitur kolom dinamis untuk tabel sensor.

ALTER TABLE sensor SET DYNAMIC_COLUMNS = 'true';
Catatan

Untuk informasi lebih lanjut tentang kolom dinamis, lihat Kolom dinamis.

Atur konsistensi tabel

Atur konsistensi untuk tabel data spasial-temporal roads.

ALTER TABLE roads SET 'CONSISTENCY' = 'strong';

Atur TTL

  • Atur TTL untuk tabel sensor dalam satuan detik (s).

    ALTER TABLE sensor SET TTL = '2592000';
  • Hapus TTL dari tabel sensor.

    ALTER TABLE sensor SET TTL = '';

    Verifikasi hasil

    Di sistem manajemen kluster, buka halaman Overview. Klik nama tabel target di bawah database target. Di bagian Current table details, lihat nilai parameter TTL. Untuk informasi tentang cara mengakses sistem manajemen kluster, lihat Masuk ke sistem manajemen kluster.

Atur algoritma kompresi

  • Atur algoritma kompresi tabel sensor menjadi ZSTD.

    ALTER TABLE sensor SET COMPRESSION = 'ZSTD';
  • Atur algoritma kompresi untuk tabel sensor menjadi NONE.

    ALTER TABLE sensor SET COMPRESSION = 'NONE';

    Verifikasi hasil

    Di sistem manajemen kluster, buka halaman Overview dan klik nama tabel target di bawah database target. Di bagian Current table details, klik View table properties untuk melihat nilai parameter COMPRESSION.

Konfigurasikan pemisahan data panas dan dingin

Catatan

Untuk informasi lebih lanjut tentang pemisahan data panas dan dingin, lihat Pengantar pemisahan data panas dan dingin.

Tetapkan batas data panas dan dingin

Waktu pemasukan data

Atur batas data panas dan dingin untuk tabel sensor. LindormTable menentukan apakah data akan diarsipkan ke penyimpanan Capacity berdasarkan waktu pemasukan data setiap baris.

-- Aktifkan pemisahan data panas dan dingin untuk tabel sensor berdasarkan waktu pemasukan data dan atur batas menjadi satu hari.
ALTER TABLE sensor SET CHS = '86400', CHS_L2 = 'storagetype=COLD';

Verifikasi hasil

Anda dapat menjalankan pernyataan SHOW TABLE VARIABLES FROM sensor LIKE 'CHS%'; untuk melihat nilai parameter CHS dan CHS_L2. Untuk informasi lebih lanjut tentang sintaksis SHOW VARIABLES, lihat SHOW VARIABLES.

Kolom waktu kustom

Penting

Pemisahan data berdasarkan kolom waktu kustom memiliki keterbatasan. Sebelum menggunakan fitur ini, tinjau Catatan penggunaan.

Atur kolom waktu kustom time sebagai batas data panas dan dingin untuk tabel sensor. LindormTable menentukan apakah data akan diarsipkan ke penyimpanan Capacity berdasarkan timestamp event dari kolom time pada setiap baris.

-- Aktifkan pemisahan data panas dan dingin untuk tabel sensor berdasarkan kolom kustom, atur batas menjadi satu hari, dan gunakan kolom time.
ALTER TABLE sensor SET CHS ='86400', CHS_L2 = 'storagetype=COLD', CHS_COLUMN = 'COLUMN=time';

Verifikasi hasil

Anda dapat menjalankan pernyataan SHOW TABLE VARIABLES FROM sensor LIKE 'CHS%'; untuk melihat nilai parameter CHS, CHS_L2, dan CHS_COLUMN. Untuk informasi lebih lanjut tentang sintaksis SHOW VARIABLES, lihat SHOW VARIABLES.

Hapus batas data panas dan dingin

Hapus batas data panas dan dingin untuk tabel sensor.

ALTER TABLE sensor SET CHS = '', CHS_L2 = '';

Verifikasi hasil

Anda dapat menjalankan pernyataan SHOW TABLE VARIABLES FROM sensor LIKE 'CHS%'; untuk melihat nilai parameter CHS dan CHS_L2. Untuk informasi lebih lanjut tentang sintaksis SHOW VARIABLES, lihat SHOW VARIABLES.

Jalankan major compaction

  • Jalankan major compaction pada tabel sensor.

    ALTER TABLE sensor COMPACT;
    Catatan

    Untuk instans multi-zona, perhatikan aturan berikut:

    • Jika versi LindormTable Anda lebih awal dari 2.6.4.2, sistem menjalankan major compaction pada idc1 secara default jika Anda tidak menentukan IDC.

    • Jika versi LindormTable Anda 2.6.4.2 atau lebih baru, sistem menjalankan major compaction pada semua IDC secara default.

  • Jalankan major compaction pada idc2.

    ALTER TABLE sensor COMPACT 'idc2';
  • Jalankan major compaction pada idc1 dan idc2.

    ALTER TABLE sensor COMPACT 'idc1,idc2';