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.
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.
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
eventualmenjadistrong, tetapi tidak dapat mengubahnya daristrongmenjadieventual.
-
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
idcNametidak 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';
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
sensordalam 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
sensormenjadiZSTD.ALTER TABLE sensor SET COMPRESSION = 'ZSTD'; -
Atur algoritma kompresi untuk tabel
sensormenjadiNONE.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
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
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;CatatanUntuk instans multi-zona, perhatikan aturan berikut:
-
Jika versi LindormTable Anda lebih awal dari 2.6.4.2, sistem menjalankan major compaction pada
idc1secara 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
idc1danidc2.ALTER TABLE sensor COMPACT 'idc1,idc2';