AnalyticDB for PostgreSQL; satır yönelimli, sütun yönelimli ve karma satır-sütun olmak üzere üç depolama modelini destekler. Bir tablo oluştururken doğru modeli seçin.
Depolama modeli seçin
Seçtiğiniz model yazma aktarım hızını, sorgu performansını ve sıkıştırma oranını etkiler. Karar vermek için aşağıdaki ölçütleri kullanın.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Karma satır-sütun depolama yalnızca AnalyticDB for PostgreSQL V7.0'da kullanılabilir.
Depolama modelini belirtin
Depolama modelini ayarlamak ve sıkıştırmayı yapılandırmak için CREATE TABLE içindeki WITH yan tümcesini kullanın. Aşağıdaki parametreler desteklenir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Satır yönelimli tablolar
AnalyticDB for PostgreSQL varsayılan olarak PostgreSQL yığın depolama modelini kullanarak satır yönelimli tablolar oluşturur. Satır yönelimli tablolar şu durumlar için optimize edilmiştir:
INSERT yoluyla gerçek zamanlı yazma işlemleri
Sık UPDATE ve DELETE işlemleri
B-tree dizini kullanan nokta sorguları
Yığın tablosu (varsayılan)
CREATE TABLE foo (a int, b text) DISTRIBUTED BY (a);
Ekleme optimize edilmiş satır yönelimli (AORO) tablo
CREATE TABLE bar (a int, b text)
WITH (appendonly=true, orientation=row)
DISTRIBUTED BY (a);
Data Transmission Service (DTS) kullanarak AnalyticDB for PostgreSQL'e veri yazarken hedef tablolar satır yönelimli olmalıdır. DTS, INSERT, UPDATE ve DELETE işlemleri için neredeyse gerçek zamanlı eşitlemeyi destekler.
Sütun yönelimli tablolar
Sütun yönelimli tablolar verileri sütun bazında depolar ve yalnızca bir sorguda başvurulan sütunları okur. Bu durum, onları veri ambarı iş yükleri için özellikle uygun hale getirir; örneğin az sayıda sütunu toplayan sorgular:
SELECT SUM(revenue), AVG(cost) FROM orders WHERE region = 'us';
Sütun yönelimli tablolar, satır yönelimli tablolara kıyasla 3–5 kat daha yüksek bir sıkıştırma oranı sağlar. Sık satır düzeyinde ekleme veya güncelleme işlemleri için daha az verimlidirler; en iyi performansı elde etmek için COPY gibi toplu iş yükleme yöntemlerini kullanın.
Sütun yönelimli tablolar ekleme optimize edilmiş olmalıdır. Oluştururken appendonly=true ayarlayın.
CREATE TABLE bar (a int, b text)
WITH (appendonly=true, orientation=column)
DISTRIBUTED BY (a);
Karma satır-sütun depolama tabloları
Karma satır-sütun depolama yalnızca AnalyticDB for PostgreSQL V7.0 örneklerinde desteklenir.
Karma satır-sütun depolama modeli, iki dahili depolama katmanını birleştiren Beam depolama motorunu kullanır:
Delta depolama (satır yönelimli):
INSERT INTO ... VALUESaracılığıyla gerçek zamanlı akış yazma işlemlerini yönetir. Satır yönelimli tablolarla karşılaştırılabilir yazma performansı sunar.Temel depolama (PAX tabanlı, sütun yönelimli):
COPYveyaINSERT INTO ... SELECTaracılığıyla toplu iş yazma işlemlerini yönetir. Toplu veriler için daha yüksek aktarım hızı sağlar.
Beam, gelen verileri yazma yöntemine göre uygun katmana otomatik olarak yönlendirir.
Bölümlenmemiş tablolar
Beam depolama motoruyla bir tablo oluşturun
CREATE TABLE testtable (a int) USING beam;
Mevcut bir tabloyu beam depolama motorunu kullanacak şekilde değiştirin
ALTER TABLE testtable SET ACCESS METHOD beam;
Bölümlenmiş tablolar
Aşağıdaki örneklerde, yığın depolama kullanılarak oluşturulan temel bir bölümlenmiş tablo kullanılmıştır:
CREATE TABLE am_partitioned(x INT, y INT)
PARTITION BY HASH (x) USING heap;
Bir bölüm oluştururken depolama modelini belirtin
Ekleme optimize edilmiş sütun yönelimli (AOCO) depolama ile bir bölüm oluşturun:
CREATE TABLE am_partitioned_1 PARTITION OF am_partitioned
FOR VALUES WITH (MODULUS 3, REMAINDER 0) USING ao_column;
Karma satır-sütun (beam) depolama ile bir bölüm oluşturun:
CREATE TABLE amm_partitioned_2 PARTITION OF amm_partitioned
FOR VALUES WITH (MODULUS 3, REMAINDER 1) USING beam;
Mevcut bir bölümün depolama modelini değiştirin
ALTER TABLE am_partitioned_1 SET ACCESS METHOD ao_row;
Veri sıkıştırma
Sıkıştırma, sütun yönelimli tablolar ve ekleme optimize edilmiş satır yönelimli (AORO) tablolar (appendonly=true) için kullanılabilir. İki düzeyde sıkıştırma desteklenir:
Tablo düzeyinde sıkıştırma: Tek bir algoritmayı tüm tabloya uygular
Sütun düzeyinde sıkıştırma: Her sütuna benzersiz bir sıkıştırma algoritması uygular
Sürüme göre desteklenen algoritmalar
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QuickLZ algoritmasını belirtirseniz bu otomatik olarak zlib ile değiştirilir. rle_type algoritması yalnızca sütun yönelimli tablolar için geçerlidir.
Örnekler
Varsayılan sıkıştırma ayarlarıyla bir sütun yönelimli tablo oluşturun:
CREATE TABLE am_testtable(x INT, y INT)
WITH (orientation=column);
5. düzeyde zlib sıkıştırma ile bir sütun yönelimli tablo oluşturun:
CREATE TABLE foo (a int, b text)
WITH (appendonly=true, orientation=column, compresstype=zlib, compresslevel=5);
9. düzeyde zstd sıkıştırma ile bir sütun yönelimli tablo oluşturun:
CREATE TABLE foo (a int, b text)
WITH (appendonly=true, orientation=column, compresstype=zstd, compresslevel=9);