Hologres'te bir tablonun depolama düzenini tanımlamak için CREATE TABLE ifadesini kullanın. Oluşturma sırasında doğru depolama modunu, dağıtım anahtarını ve dizinleri ayarlamak kritiktir; bu özelliklerin çoğu tablo oluşturulduktan sonra değiştirilemez.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Bir Hologres örneği
Oluşturulmuş bir veritabanı
Hedef veritabanına bağlantı — Sorguları çalıştırmak için önerilen araç HoloWeb hizmetidir
Hızlı başlangıç
Bu örnekte, (Hologres V2.1 ve sonraki sürümlerde kullanılabilen) CREATE TABLE WITH sözdizimi kullanılarak bir işlem ayrıntıları tablosu oluşturulur. Hierarşik adlandırma kuralı kullanılır, birden fazla alan tanımlanır ve meta veri açıklamaları eklenir.
BEGIN;
-- Create a transaction details fact table.
-- Use the public schema and follow the hierarchical naming convention (dwd_xxx).
CREATE TABLE IF NOT EXISTS public.dwd_trade_orders (
order_id BIGINT NOT NULL,
shop_id INT NOT NULL,
user_id TEXT NOT NULL,
order_amount NUMERIC(12, 2) DEFAULT 0.00,
payment NUMERIC(12, 2) DEFAULT 0.00,
payment_type INT DEFAULT 0, -- 0: Unpaid, 1: Alipay, 2: WeChat Pay, 3: Credit Card
is_delivered BOOLEAN DEFAULT false,
dt TEXT NOT NULL, -- Data timestamp, in YYYYMMDD format
order_time TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (order_id)
)
WITH (
orientation = 'column', -- Column-oriented: best for OLAP aggregation on large datasets
distribution_key = 'order_id', -- Shard data by order_id for even distribution
clustering_key = 'order_time:asc', -- Sort data by time within files to accelerate range queries
event_time_column = 'order_time', -- Enable file-level clipping for time range filters
bitmap_columns = 'shop_id,payment_type,is_delivered', -- Accelerate equality filters on low-cardinality columns
dictionary_encoding_columns = 'user_id:auto' -- Accelerate GROUP BY and FILTER on string columns
);
-- Add metadata comments.
COMMENT ON TABLE public.dwd_trade_orders IS 'Base fact table for transaction order details.';
COMMENT ON COLUMN public.dwd_trade_orders.order_id IS 'The unique identifier of the order.';
COMMENT ON COLUMN public.dwd_trade_orders.shop_id IS 'The unique ID of the shop.';
COMMENT ON COLUMN public.dwd_trade_orders.user_id IS 'The ID of the buyer.';
COMMENT ON COLUMN public.dwd_trade_orders.dt IS 'The data timestamp, in YYYYMMDD format.';
COMMENT ON COLUMN public.dwd_trade_orders.order_time IS 'The precise timestamp when the order was created.';
COMMIT;
Tablo şemasını görüntüleyin
Tablo için Veri Tanımlama Dili (DDL) ifadesini almak üzere aşağıdaki sorguyu çalıştırın:
SELECT hg_dump_script('public.dwd_trade_orders');
Veri ekleyin
Hologres, standart Veri İşleme Dili (DML) sözdizimiyle uyumludur. Aşağıdaki ifade 10 satır örnek veri ekler:
INSERT INTO public.dwd_trade_orders
(order_id, shop_id, user_id, order_amount, payment, payment_type, is_delivered, dt, order_time)
VALUES
(50001, 101, 'U678', 299.00, 280.00, 1, true, '20231101', '2023-11-01 10:00:01+08'),
(50002, 102, 'U992', 59.00, 59.00, 2, false, '20231101', '2023-11-01 10:05:12+08'),
(50003, 101, 'U441', 150.00, 145.00, 1, true, '20231101', '2023-11-01 10:10:45+08'),
(50004, 105, 'U219', 888.00, 888.00, 3, true, '20231101', '2023-11-01 10:20:11+08'),
(50005, 102, 'U883', 35.00, 30.00, 1, false, '20231101', '2023-11-01 10:32:00+08'),
(50006, 110, 'U007', 120.50, 120.50, 2, true, '20231101', '2023-11-01 10:45:33+08'),
(50007, 101, 'U321', 210.00, 210.00, 1, true, '20231101', '2023-11-01 11:02:19+08'),
(50008, 108, 'U556', 45.00, 45.00, 2, false, '20231101', '2023-11-01 11:15:04+08'),
(50009, 101, 'U112', 300.00, 290.00, 3, true, '20231101', '2023-11-01 11:25:55+08'),
(50010, 105, 'U449', 99.90, 99.90, 1, true, '20231101', '2023-11-01 11:40:22+08');
Verileri sorgulayın
-- Calculate the total transaction amount per shop, sorted in descending order.
SELECT
shop_id,
COUNT(1) AS total_orders,
SUM(payment) AS total_payment
FROM public.dwd_trade_orders
GROUP BY shop_id
ORDER BY total_payment DESC;
Beklenen çıktı:
shop_id total_orders total_payment
105 2 987.90
101 4 925.00
110 1 120.50
102 1 59.00
108 1 45.00
Sözdizimi
CREATE TABLE sözdizimi
Hologres, tablo özelliklerini ve açıklamalarını tanımlamak için iki sözdizimini destekler:
Standart sözdizimi (Hologres V2.1 ve sonraki sürümler için önerilir)
Özellikleri satır içi tanımlamak için WITH anahtar sözcüğünü kullanın. Bu sözdizimi daha kompakttır ve daha iyi performans sunar.
BEGIN;
CREATE TABLE [IF NOT EXISTS] [schema_name.]table_name (
{
column_name column_type [column_constraints, [...]]
| table_constraints
[,...]
}
)
[WITH (
property = 'value'
[, ...]
)];
[COMMENT ON COLUMN <[schema_name.]tablename.column> IS '<value>';]
[COMMENT ON TABLE <[schema_name.]tablename> IS '<value>';]
COMMIT;
Uyumlu sözdizimi (tüm sürümlerde desteklenir)
Özellikleri ayarlamak için CALL set_table_property ve açıklama eklemek için COMMENT ifadelerini kullanın. Tüm ifadeler, CREATE TABLE ile aynı BEGIN...COMMIT işlem bloğunda yer almalıdır.
BEGIN;
CREATE TABLE [IF NOT EXISTS] [schema_name.]table_name (
{
column_name column_type [column_constraints, [...]]
| table_constraints
[,...]
}
);
CALL set_table_property('[schema_name.]<table_name>', '<property>', '<value>');
COMMENT ON COLUMN <[schema_name.]tablename.column> IS '<value>';
COMMENT ON TABLE <[schema_name.]tablename> IS '<value>';
COMMIT;
Tablo özellikleri
Özellikler işlevlerine göre üç gruba ayrılır. Değiştirilemez olarak işaretlenen özellikler, tablo oluşturulduktan sonra değiştirilemez; tabloyu yeniden oluşturmanız gerekir.
Veri organizasyonu (oluşturulduktan sonra değiştirilemez)
| Özellik | Açıklama | Sütun yönelimli | Satır yönelimli | Satır-sütun hibrit | Varsayılan |
|---|---|---|---|---|---|
orientation |
Depolama biçimini ayarlar. Bkz. Depolama modları. | column |
row |
row,column |
column |
distribution_key |
Veri parçalama ilkesini ayarlar. Bkz. Dağıtım anahtarı. | Varsayılan olarak birincil anahtar; en iyi performans için birincil anahtardan bir sütun seçin. | Varsayılan olarak birincil anahtar. | Varsayılan olarak birincil anahtar. | Birincil anahtar |
clustering_key |
Dosyalar içindeki verileri fiziksel olarak sıralayarak aralık sorgularını hızlandırır. Bkz. Kümeleme anahtarı. | Varsayılan olarak boş. En fazla bir sütun kullanın; yalnızca artan sıra desteklenir. | Varsayılan olarak birincil anahtar. | Varsayılan olarak boş. | — |
event_time_column |
Verileri zamana göre dosya segmentlerine böler ve hızlı zaman aralığı filtrelemeyi etkinleştirir. Bkz. Olay zamanı sütunu. | Varsayılan olarak ilk null olmayan zaman damgası alanı. | Desteklenmez. | Varsayılan olarak ilk null olmayan zaman damgası alanı. | İlk null olmayan zaman damgası |
table_group |
Veri dağıtımı için parça sayısını kontrol eder. Bkz. Tablo grupları ve parça sayıları. | Varsayılan tablo grubu. | Varsayılan tablo grubu. | Varsayılan tablo grubu. | Varsayılan tablo grubu |
orientation, distribution_key, clustering_key ve event_time_column özellikleri tablo oluşturulduktan sonra değiştirilemez. Bu özellikleri tabloyu oluşturmadan önce dikkatlice planlayın. table_group özelliği de tablo yeniden oluşturulmadan veya yeniden parçalanmadan değiştirilemez.
Dizine dayalı hızlandırma (oluşturulduktan sonra değiştirilebilir)
| Özellik | Açıklama | Sütun yönelimli | Satır yönelimli | Satır-sütun hibrit |
|---|---|---|---|---|
bitmap_columns |
Düşük kardinaliteli sütunlarda hızlı eşitlik filtrelemesi için bit eşlem dizini oluşturur. Bkz. Bit eşlem dizini. Eşitlik karşılaştırmalarında kullanılan sütunlar için kullanın; 10'dan fazla sütun ayarlamaktan kaçının. | Desteklenir | Desteklenmez | Desteklenir |
dictionary_encoding_columns |
Dize karşılaştırmalarını sayısal karşılaştırmalara dönüştüren bir sözlük haritası oluşturarak GROUP BY ve FILTER işlemlerini hızlandırır. Sütun yönelimli tablolardaki tüm TEXT sütunları varsayılan olarak etkindir. V0.9 ve sonraki sürümlerde Hologres, veri özelliklerine göre sözlük kodlamasının uygulanıp uygulanmayacağını otomatik olarak belirler. | Desteklenir | Desteklenmez | Desteklenir |
bitmap_columns ve dictionary_encoding_columns özellikleri, tablo oluşturulduktan sonra ALTER TABLE kullanılarak değiştirilebilir.
dictionary_encoding_columns sözdizimi:
CALL set_table_property('table_name', 'dictionary_encoding_columns', '[columnName{:[on|off|auto]}[,...]]');
Veri yaşam döngüsü
| Özellik | Açıklama | Sütun yönelimli | Satır yönelimli | Satır-sütun hibrit |
|---|---|---|---|---|
time_to_live_in_seconds |
Tablo verileri için Saniye cinsinden Yaşam Süresi (TTL) ayarlar. TTL, güncelleme zamanından değil yazma zamanından başlar. V1.3.24 ve sonraki sürümlerde izin verilen minimum değer 86.400'dür (bir gün). | Desteklenir | Önerilmez — varsayılan değeri kullanın | Önerilmez |
storage_mode |
Verilerin sıcak veya soğuk depolamada saklanıp saklanmayacağını belirtir. V1.3 ve sonraki sürümlerde desteklenir. Bkz. Katmanlı veri depolama. | Gerektiğinde kullanın | Gerektiğinde kullanın | — |
time_to_live_in_seconds notları:
TTL tam bir zamanda uygulanmaz. TTL süresi dolduktan sonra veriler belirli bir pencere içinde silinir, kesin bir anda değil.
Yalnızca veriler silinir; tablo kendisi kalır.
TTL, silme işleminden sonra yinelenen birincil anahtarlara veya tutarsız sorgu sonuçlarına neden olabilir.
Üretim ortamında veri yaşam döngüsü yönetimi için bunun yerine bölümlenmiş tabloları kullanın. Bkz. CREATE PARTITION TABLE.
Hologres V4.2'den başlayarak, birincil anahtarı olan tablolar için TTL ayarı
hg_time_to_live_in_days_min_valueGUC parametresi tarafından kısıtlanır. Bu parametre gün cinsinden ölçülür, varsayılan değeri 36500'dür (100 yıl) ve yalnızca Superuser tarafından değiştirilebilir. CREATE TABLE, ALTER TABLE, SET_TABLE_PROPERTY veya REBUILD aracılığıyla bir birincil anahtar tablosunun TTL'sini ayarladığınızda, sistem değerin minimum gereksinimi karşıladığını doğrular (değerhg_time_to_live_in_days_min_valuekarşılık gelen gün sayısından büyük veya ona eşit olmalıdır). Birincil anahtarı olmayan tablolar bu kısıtlamadan etkilenmez.
Ayarlanmadığında varsayılan TTL 100 yıldır (etkin olarak süre sonu yoktur).
time_to_live_in_seconds sözdizimi:
CALL set_table_property('table_name', 'time_to_live_in_seconds', '<non_negative_literal>');
storage_mode sözdizimi:
-- Set storage mode at table creation:
CREATE TABLE <table_name> (...) WITH (storage_mode = 'hot');
CREATE TABLE <table_name> (...) WITH (storage_mode = 'cold');
-- Set storage mode after table creation:
CALL set_table_property('table_name', 'storage_mode', 'hot');
CALL set_table_property('table_name', 'storage_mode', 'cold');
Örnekler
Örnek: Büyük ölçekli zaman serisi verileri için bölümlenmiş tablo
Veri hacimleri arttıkça tek bir düz tablonun bakımı maliyetli hale gelir; geçmiş verileri temizlemek tüm satırların taranmasını gerektirir ve zamana dayalı sorgular tam tablo taraması yapar. Bölümlenmiş bir tablo, verileri güne göre fiziksel olarak izole ederek temizleme için anlık bölüm silmeye ve sorgular sırasında otomatik bölüm elemeye olanak tanır.
Bu örnekte, Hızlı başlangıç bölümündeki dwd_trade_orders tablosu bölümlenmiş bir yapıya yükseltilir. Alan tanımları ve dizin ayarları miras alınır ancak birincil anahtar, bölüm anahtarı dt içermelidir.
BEGIN;
-- Create the partitioned parent table.
-- The primary key includes both the business key (order_id) and the partition key (dt).
CREATE TABLE IF NOT EXISTS public.dwd_trade_orders_partitioned (
order_id BIGINT NOT NULL,
shop_id INT NOT NULL,
user_id TEXT NOT NULL,
order_amount NUMERIC(12, 2) DEFAULT 0.00,
payment NUMERIC(12, 2) DEFAULT 0.00,
payment_type INT DEFAULT 0,
is_delivered BOOLEAN DEFAULT false,
dt TEXT NOT NULL,
order_time TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (order_id, dt)
)
PARTITION BY LIST (dt)
WITH (
orientation = 'column',
distribution_key = 'order_id',
event_time_column = 'order_time',
clustering_key = 'order_time:asc'
);
COMMIT;
-- Create a child table to provide physical storage for a specific date.
CREATE TABLE IF NOT EXISTS public.dwd_trade_orders_20231101
PARTITION OF public.dwd_trade_orders_partitioned FOR VALUES IN ('20231101');
-- Insert data. The application logic is identical to the flat table.
-- Data is automatically routed to the correct child table.
INSERT INTO public.dwd_trade_orders_partitioned
(order_id, shop_id, user_id, order_amount, payment, payment_type, is_delivered, dt, order_time)
VALUES
(50001, 101, 'U678', 299.00, 280.00, 1, true, '20231101', '2023-11-01 10:00:01+08'),
(50002, 102, 'U992', 59.00, 59.00, 2, false, '20231101', '2023-11-01 10:05:12+08'),
(50003, 101, 'U441', 150.00, 145.00, 1, true, '20231101', '2023-11-01 10:10:45+08'),
(50004, 105, 'U219', 888.00, 888.00, 3, true, '20231101', '2023-11-01 10:20:11+08'),
(50005, 102, 'U883', 35.00, 30.00, 1, false, '20231101', '2023-11-01 10:32:00+08'),
(50006, 110, 'U007', 120.50, 120.50, 2, true, '20231101', '2023-11-01 10:45:33+08'),
(50007, 101, 'U321', 210.00, 210.00, 1, true, '20231101', '2023-11-01 11:02:19+08'),
(50008, 108, 'U556', 45.00, 45.00, 2, false, '20231101', '2023-11-01 11:15:04+08'),
(50009, 101, 'U112', 300.00, 290.00, 3, true, '20231101', '2023-11-01 11:25:55+08'),
(50010, 105, 'U449', 99.90, 99.90, 1, true, '20231101', '2023-11-01 11:40:22+08');
-- Query with a partition filter. Hologres scans only the matching child table.
SELECT COUNT(*) FROM public.dwd_trade_orders_partitioned WHERE dt = '20231101';
-- Drop a child table to reclaim space in seconds (much faster than DELETE).
-- DROP TABLE public.dwd_trade_orders_20231101;
Örnek: Büyük veri kümeleri için gerçek zamanlı analitik (olgu tablosu)
Senaryo: Büyük veri hacimleriyle gerçek zamanlı pano özetleri; temel gereksinim hızlı toplamadır — örneğin, Brüt Satış Hacmi (GMV) ve sipariş sayılarının hesaplanması.
Sütun yönelimli depolama burada mükemmel çalışır: Yüksek sıkıştırma oranları G/Ç'yi azaltır ve sütun taramaları yalnızca toplama için gereken sütunları okur.
BEGIN;
CREATE TABLE IF NOT EXISTS public.dwd_order_summary (
order_id BIGINT PRIMARY KEY,
category_id INT NOT NULL,
gmv NUMERIC(15, 2),
order_time TIMESTAMPTZ NOT NULL
) WITH (
orientation = 'column', -- Best for large-scale aggregation; high compression, efficient column scans
distribution_key = 'order_id', -- Even distribution; enables local joins with other order tables
event_time_column = 'order_time', -- Enables file-level segment clipping for time range filters
clustering_key = 'order_time:asc' -- Reduces disk I/O for "last hour" or "specific day" queries
);
COMMENT ON TABLE public.dwd_order_summary IS 'Fact table for order summary details.';
COMMENT ON COLUMN public.dwd_order_summary.order_id IS 'The unique order ID.';
COMMENT ON COLUMN public.dwd_order_summary.category_id IS 'The category ID.';
COMMENT ON COLUMN public.dwd_order_summary.gmv IS 'The gross merchandise volume.';
COMMENT ON COLUMN public.dwd_order_summary.order_time IS 'The time when the order was placed.';
COMMIT;
Örnek: Yüksek eşzamanlı nokta sorguları (boyut tablosu)
Senaryo: Yüksek Saniye Başına Sorgu (QPS) altında milisaniyeler içinde user_id ile kullanıcı profili alma.
Satır yönelimli depolama, birincil anahtar tabanlı aramalar için optimize edilmiştir. Tüm satır verileri bitişik olarak depolandığından, ilgisiz sütunları taramadan nokta sorguları son derece hızlı gerçekleşir.
BEGIN;
CREATE TABLE IF NOT EXISTS public.dim_user_persona (
user_id TEXT PRIMARY KEY,
user_level INT,
persona_jsonb JSONB
) WITH (
orientation = 'row'
-- For row-oriented tables, the primary key is automatically used as the distribution key
-- and clustering key. No additional settings are required.
);
COMMENT ON TABLE public.dim_user_persona IS 'Dimension table for user profiles.';
COMMENT ON COLUMN public.dim_user_persona.user_id IS 'The unique user ID.';
COMMENT ON COLUMN public.dim_user_persona.user_level IS 'The user level.';
COMMENT ON COLUMN public.dim_user_persona.persona_jsonb IS 'The user profile features in JSON format.';
COMMIT;
Örnek: Hibrit iş yükü (satır-sütun hibrit depolama)
Senaryo: Hem analitik (lojistik durumlarını özetleme) hem de nokta sorguları (order_id ile sipariş ayrıntılarını alma) gerektiren bir lojistik ve satış sonrası sistemi.
Satır-sütun hibrit depolama, satır yönelimli depolamanın milisaniye düzeyindeki nokta sorgusu performansını sütun yönelimli depolamanın verimli toplama özelliğiyle birleştirir.
BEGIN;
CREATE TABLE IF NOT EXISTS public.ads_shipping_info (
order_id BIGINT PRIMARY KEY,
shipping_status INT,
receiver_address TEXT,
update_time TIMESTAMPTZ
) WITH (
orientation = 'row,column', -- Supports both point queries and aggregation
distribution_key = 'order_id', -- Controls data distribution across shards
bitmap_columns = 'shipping_status' -- Accelerates "status = X" filter queries on a low-cardinality column
);
COMMENT ON TABLE public.ads_shipping_info IS 'Application table for logistics status queries.';
COMMENT ON COLUMN public.ads_shipping_info.order_id IS 'The order ID.';
COMMENT ON COLUMN public.ads_shipping_info.shipping_status IS 'Logistics status (1: To be shipped, 2: In transit, 3: Delivered).';
COMMENT ON COLUMN public.ads_shipping_info.receiver_address IS 'The shipping address.';
COMMIT;
Sınırlamalar
Hologres, tablo başına maksimum 6.400 sütunu destekler.
Birincil anahtar sınırlamaları
-
Composite primary keys: Birden fazla alan birincil anahtarı oluşturabilir. Tüm alanlar
NOT NULLolmalı ve tek bir ifadede bildirilmelidir.BEGIN; CREATE TABLE public.test ( id TEXT NOT NULL, ds TEXT NOT NULL, PRIMARY KEY (id, ds) ); CALL SET_TABLE_PROPERTY('public.test', 'orientation', 'column'); COMMIT; Desteklenmeyen türler: FLOAT, DOUBLE, NUMERIC, ARRAY, JSON, DATE ve diğer karmaşık türler birincil anahtar sütunu olarak kullanılamaz.
Değiştirilemez: Birincil anahtar, tablo oluşturulduktan sonra değiştirilemez. Farklı bir birincil anahtara ihtiyacınız varsa tabloyu yeniden oluşturun.
Depolama gereksinimleri: Satır yönelimli ve satır-sütun hibrit tabloların birincil anahtarı olmalıdır. Sütun yönelimli tablolar için birincil anahtar isteğe bağlıdır.
Kısıtlama desteği
| Kısıtlama | Sütun düzeyi | Tablo düzeyi |
|---|---|---|
primary key |
Desteklenir | Desteklenir |
not null |
Desteklenir | — |
null |
Desteklenir | — |
unique |
Desteklenmez | Desteklenmez |
check |
Desteklenmez | Desteklenmez |
default |
Desteklenir | Desteklenmez |
Adlandırma ve kaçış kuralları
Sütun adları
hg_ile başlayamaz.Şema adları
holo_,hg_veyapg_ile başlayamaz.Tablo adları 127 baytı aşamaz.
Adlar SQL anahtar sözcükleri, ayrılmış sözcükler, sistem alanları (örneğin
ctid), büyük/küçük harfe duyarlı tanımlayıcılar, özel karakterler içeren adlar veya rakamla başlayan adlar olduğunda çift tırnak işareti ("") içine alınmalıdır.
Hologres V2.0 ve sonraki sürümlerde kaçışlı sütun adları için sözdizimi:
-- Single escaped column
BEGIN;
CREATE TABLE tbl (c1 INT NOT NULL);
CALL set_table_property('tbl', 'clustering_key', '"c1":asc');
COMMIT;
-- Multiple columns, including an uppercase one (V2.1 and later)
BEGIN;
CREATE TABLE tbl ("C1" INT NOT NULL, c2 TEXT NOT NULL) WITH (clustering_key = '"C1",c2');
COMMIT;
-- Multiple columns, including an uppercase one (V2.0 and later)
BEGIN;
CREATE TABLE tbl ("C1" INT NOT NULL, c2 TEXT NOT NULL);
CALL set_table_property('tbl', 'clustering_key', '"C1",c2');
COMMIT;
Hologres V2.0 öncesi sürümlerde kaçışlı sütun adları için sözdizimi:
BEGIN;
CREATE TABLE tbl (c1 INT NOT NULL);
CALL set_table_property('tbl', 'clustering_key', '"c1:asc"');
COMMIT;
-- Multiple columns, including an uppercase one
BEGIN;
CREATE TABLE tbl ("C1" INT NOT NULL, c2 TEXT NOT NULL);
CALL set_table_property('tbl', 'clustering_key', '"C1,c2"');
COMMIT;
Gerekirse Hologres V2.0'da eski ayrıştırıcı sözdizimine geçmek için:
-- Enable the old syntax at the session level.
SET hg_disable_parse_holo_property = on;
-- Enable the old syntax at the database level.
ALTER DATABASE <db_name> SET hg_disable_parse_holo_property = on;
IF NOT EXISTS davranışı
| Koşul | **IF NOT EXISTS belirtilmiş** |
**IF NOT EXISTS belirtilmemiş** |
|---|---|---|
| Aynı ada sahip tablo mevcut | NOTICE döndürür, oluşturmayı atlar, işlem başarılı olur | ERROR döndürür |
| Aynı ada sahip tablo yok | İşlem başarılı olur | İşlem başarılı olur |
Değişiklik sınırlamaları
Bir tablo oluşturulduktan sonra aşağıdakiler değiştirilemez:
Veri türleri (Hologres V3.0 öncesi)
Sütun sırası
Nullability kısıtlaması (
NOT NULL↔ nullable)Depolama düzeni özellikleri:
orientation,distribution_key,clustering_key,event_time_column
Aşağıdakiler tablo oluşturulduktan sonra değiştirilebilir:
bitmap_columnsvedictionary_encoding_columns— ALTER TABLE aracılığıylaVeri türleri: V3.0 ve sonraki sürümlerde bazı türler; V3.1 ve sonraki sürümlerde REBUILD ile tüm türler — bkz. Veri türlerini değiştirme ve REBUILD
Sonraki adımlar
CREATE PARTITION TABLE — bölümlenmiş tablolar kullanarak veri yaşam döngüsünü büyük ölçekte yönetin
ALTER TABLE — tablo oluşturulduktan sonra değiştirilebilir özellikleri değiştirin
Dağıtım anahtarı — doğru dağıtım anahtarının nasıl seçileceğini öğrenin
Kümeleme anahtarı — kümeleme anahtarlarının sorgu performansını nasıl iyileştirdiğini anlayın
Depolama modları — sütun yönelimli, satır yönelimli ve satır-sütun hibrit depolamayı derinlemesine karşılaştırın