ALTER TABLE deyimi; sütun ekleme, silme ve tablo niteliklerini ayarlama gibi işlemlerle bir tablonun şemasını değiştirir. Desteklenen yan tümceler LindormTable ve LindormTSDB arasında farklılık gösterir.
Motorlar ve sürümler
ALTER TABLE deyimi LindormTable ve LindormTSDB için geçerlidir. Sürüm kısıtlaması yoktur.
Kullanım notları
ALTER TABLE işlemi kilitleme yapmaz. İşlem süresince tablo okuma ve yazma için erişilebilir kalır. Ancak aşağıdaki nedenlerden dolayı zaman aşımı hataları veya kısa süreli performans dalgalanmaları yaşayabilirsiniz:
DDL işlemi sırasında her parça, meta verileri yeniden yüklemek için kısa süreliğine kapatılıp yeniden açılır. Bu işlem genellikle 10 milisaniye ile birkaç yüz milisaniye arasında sürer. İstek yeniden açılan bir parçaya yönlendirilirse küçük bir gecikme veya kısa süreli performans dalgalanması yaşanabilir. DDL işlemlerini yoğun olmayan saatlerde gerçekleştirmenizi öneririz.
DDL işleminin sonucu, değişiklik tüm parçalara uygulandıktan sonra döner. Büyük tablolar için istemci zaman aşımı süresi kısaysa bu durum istemci tarafında zaman aşımına neden olabilir. İşlem sunucu tarafında tamamlanana kadar çalışmaya devam eder.
Söz dizimi
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]
Motor farkları
ALTER TABLE deyimi LindormTable ve LindormTSDB arasında farklılık gösterir. Aşağıdaki tabloda desteklenen yan tümceler karşılaştırılmıştır.
|
Yan Tümce |
LindormTable |
LindormTSDB |
|
ADD COLUMN |
Desteklenir |
Desteklenir |
|
COMPACT |
Desteklenir Not
LindormTable 2.3.4 ve sonraki sürümlerde desteklenir. |
Desteklenmez |
|
DROP COLUMN |
Desteklenir Not
LindormTable 2.6.6 ve sonraki sürümlerde desteklenir. |
Desteklenmez |
|
SET table_options |
Desteklenir |
Desteklenmez |
Yan tümceler
ADD COLUMN
Hem LindormTable hem de LindormTSDB ADD COLUMN yan tümcesini destekler.
Sütun eklerken aşağıdaki kurallar geçerlidir:
Birincil anahtar olarak sütun ekleyemezsiniz.
LindormTSDB için yalnızca etiket sütunu veya alan sütunu ekleyebilirsiniz. Zaman damgası sütunu ekleyemezsiniz.
DROP COLUMN
DROP COLUMN yan tümcesi yalnızca LindormTable 2.6.6 ve sonraki sürümlerde kullanılabilir.
Örneğinizi konsolda 2.6.6 veya sonraki bir sürüme yükseltemiyorsanız Lindorm teknik destek ekibiyle (DingTalk ID: s0s3eg3) iletişime geçin.
DROP COLUMN işlemi eşzamansızdır. ALTER TABLE deyimi başarılı olduktan sonra sistem hedef sütunu hemen siler ancak sütun verileri COMPACT işlemi tamamlanana kadar temizlenmez. Veri temizleme işlemini hızlandırmak için FLUSH ve COMPACT işlemlerini manuel olarak çalıştırabilirsiniz. Veriler tamamen temizlenene kadar aynı ada sahip bir sütun ekleyemezsiniz. Daha fazla bilgi için bkz. SSS.
SET table_options
Yalnızca LindormTable SET table_options yan tümcesini destekler.
Tablo niteliklerinin listesi için bkz. Tablo nitelikleri. Tablo niteliklerinin başarıyla ayarlandığını doğrulamak için SHOW TABLE VARIABLES deyimini kullanabilirsiniz. Daha fazla bilgi için bkz. SHOW TABLE VARIABLES.
MUTABILITY ve CONSISTENCY niteliklerini değiştirirken aşağıdakilere dikkat edin:
Dizin oluşturmadan önce hem MUTABILITY hem de CONSISTENCY değerlerini değiştirebilirsiniz.
-
Dizin oluşturduktan sonra:
MUTABILITY değerini değiştiremezsiniz.
CONSISTENCY değerini
eventualdeğerindenstrongdeğerine değiştirebilirsiniz ancakstrongdeğerindeneventualdeğerine değiştiremezsiniz.
Örnek için bkz. Dinamik sütunları etkinleştirme.
COMPACT
Yalnızca LindormTable 2.3.4 ve sonraki sürümler, büyük bir birleştirmeyi tetikleyen COMPACT yan tümcesini destekler.
Büyük bir birleştirme çalıştırmak veri dosyalarını birleştirir, silinen veya süresi dolan verileri temizler, disk alanını serbest bırakır ve okuma/yazma performansını artırır. Bu işlem kaynak yoğundur.
-
idcNamebelirtmezseniz:Yalnızca bir IDC'ye sahip tek alanlı örnekler için
idcNamebelirtmenin etkisi yoktur.-
İki IDC'ye sahip çok alanlı örnekler için
idcNamebelirtmezseniz aşağıdaki kurallar geçerlidir:LindormTable sürümünüz 2.6.4.2'den önceyse büyük bir birleştirme yalnızca
idc1üzerinde çalışır.LindormTable sürümünüz 2.6.4.2 veya sonraki bir sürümse büyük bir birleştirme varsayılan olarak tüm IDC'lerde çalışır.
idcNamebelirtirseniz büyük birleştirme belirtilen IDC üzerinde çalışır. Virgülle (,) ayrılmış birden fazla IDC adı belirtebilirsiniz.
Örnek için bkz. Büyük birleştirme çalıştırma.
Örnekler
Bu bölümdeki örnekler, CREATE TABLE konusundaki aşağıdaki deyimle oluşturulan sensor tablosunu kullanır:
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)
);
Sütun ekleme
sensor tablosuna yeni bir n1 sütunu ekleyin.
ALTER TABLE sensor ADD COLUMN n1 DOUBLE;
Zamansal mekanik veri tablosu roads tablosuna zamansal mekanik bir sütun ekleyin.
-
Tek bir uzamsal sütun ekleyin.
ALTER TABLE roads ADD COLUMN g2 GEOMETRY(LINESTRING); -
Birden fazla uzamsal sütun ekleyin.
ALTER TABLE roads ADD COLUMN g2 GEOMETRY(LINESTRING), g3 GEOMETRY(POLYGON);
Sütun silme
sensor tablosundan n1 sütununu silin.
ALTER TABLE sensor DROP COLUMN IF EXISTS n1;
Sonucu doğrulama
Sonucu doğrulamak için aşağıdaki deyimi çalıştırın:
DESCRIBE table sensor;
Dinamik sütunları etkinleştirme
sensor tablosu için dinamik sütunlar özelliğini etkinleştirin.
ALTER TABLE sensor SET DYNAMIC_COLUMNS = 'true';
Dinamik sütunlar hakkında daha fazla bilgi için bkz. Dinamik sütunlar.
Tablo tutarlılığını ayarlama
Zamansal mekanik veri tablosu roads için tutarlılığı ayarlayın.
ALTER TABLE roads SET 'CONSISTENCY' = 'strong';
TTL ayarlama
-
sensortablosunun TTL değerini saniye (s) cinsinden ayarlayın.ALTER TABLE sensor SET TTL = '2592000'; -
sensortablosundan TTL'yi kaldırın.ALTER TABLE sensor SET TTL = '';Sonucu doğrulama
Küme yönetim sisteminde Overview sayfasına gidin. Hedef veritabanı altındaki hedef tablo adına tıklayın. Current table details bölümünde TTL parametresinin değerini görüntüleyin. Küme yönetim sistemine erişim hakkında bilgi için bkz. Küme yönetim sisteminde oturum açma.
Sıkıştırma algoritmasını ayarlama
-
sensortablosunun sıkıştırma algoritmasınıZSTDolarak ayarlayın.ALTER TABLE sensor SET COMPRESSION = 'ZSTD'; -
sensortablosunun sıkıştırma algoritmasınıNONEolarak ayarlayın.ALTER TABLE sensor SET COMPRESSION = 'NONE';Sonucu doğrulama
Küme yönetim sisteminde Overview sayfasına gidin ve hedef veritabanı altındaki hedef tablo adına tıklayın. Current table details bölümünde View table properties seçeneğine tıklayarak COMPRESSION parametresinin değerini görüntüleyin.
Sıcak ve soğuk veri ayrımını yapılandırma
Sıcak ve soğuk veri ayrımı hakkında daha fazla bilgi için bkz. Sıcak ve soğuk veri ayrımına giriş.
Sıcak ve soğuk veri sınırını ayarlama
Alım zaman damgası
sensor tablosu için sıcak ve soğuk veri sınırını ayarlayın. LindormTable, her satırın alım zaman damgasına göre verilerin Capacity depolamaya arşivlenip arşivlenmeyeceğini belirler.
-- Enable hot and cold data separation for the sensor table based on ingestion timestamp and set the boundary to one day.
ALTER TABLE sensor SET CHS = '86400', CHS_L2 = 'storagetype=COLD';
Sonucu doğrulama
CHS ve CHS_L2 parametrelerinin değerlerini görüntülemek için SHOW TABLE VARIABLES FROM sensor LIKE 'CHS%'; deyimini çalıştırabilirsiniz. SHOW VARIABLES söz dizimi hakkında daha fazla bilgi için bkz. SHOW VARIABLES.
Özel zaman sütunu
Özel bir zaman sütununa göre veri ayırmanın sınırlamaları vardır. Bu özelliği kullanmadan önce Kullanım notlarını inceleyin.
sensor tablosu için özel zaman sütunu time sütununu sıcak ve soğuk veri sınırı olarak ayarlayın. LindormTable, her satırdaki time sütununun olay zaman damgasına göre verilerin Capacity depolamaya arşivlenip arşivlenmeyeceğini belirler.
-- Enable hot and cold data separation for the sensor table based on a custom column, set the boundary to one day, and use the time column.
ALTER TABLE sensor SET CHS ='86400', CHS_L2 = 'storagetype=COLD', CHS_COLUMN = 'COLUMN=time';
Sonucu doğrulama
CHS, CHS_L2 ve CHS_COLUMN parametrelerinin değerlerini görüntülemek için SHOW TABLE VARIABLES FROM sensor LIKE 'CHS%'; deyimini çalıştırabilirsiniz. SHOW VARIABLES söz dizimi hakkında daha fazla bilgi için bkz. SHOW VARIABLES.
Sıcak ve soğuk veri sınırını kaldırma
Sensor tablosu için sıcak ve soğuk veri sınırını kaldırın.
ALTER TABLE sensor SET CHS = '', CHS_L2 = '';
Sonucu doğrulama
CHS ve CHS_L2 parametrelerinin değerlerini görüntülemek için SHOW TABLE VARIABLES FROM sensor LIKE 'CHS%'; deyimini çalıştırabilirsiniz. SHOW VARIABLES söz dizimi hakkında daha fazla bilgi için bkz. SHOW VARIABLES.
Büyük birleştirme çalıştırma
-
Sensor tablosunda büyük bir birleştirme çalıştırın.
ALTER TABLE sensor COMPACT;NotÇok alanlı bir örnek için aşağıdaki kurallara dikkat edin:
LindormTable sürümünüz 2.6.4.2'den önceyse ve bir IDC belirtmezseniz sistem varsayılan olarak
idc1üzerinde büyük bir birleştirme çalıştırır.LindormTable sürümünüz 2.6.4.2 veya sonraki bir sürümse sistem varsayılan olarak tüm IDC'lerde büyük bir birleştirme çalıştırır.
-
idc2üzerinde büyük bir birleştirme çalıştırın.ALTER TABLE sensor COMPACT 'idc2'; -
idc1veidc2üzerinde büyük bir birleştirme çalıştırın.ALTER TABLE sensor COMPACT 'idc1,idc2';