All Products
Search
Document Center

AnalyticDB:Definisi Format Penyimpanan Tabel

Last Updated:Apr 23, 2026

AnalyticDB for PostgreSQL mendukung tiga model penyimpanan: berorientasi baris, berorientasi kolom, dan hybrid baris-kolom. Pilih model yang sesuai saat membuat tabel.

Pilih model penyimpanan

Model yang Anda pilih memengaruhi throughput penulisan, performa kueri, dan rasio kompresi. Gunakan kriteria berikut untuk menentukan pilihan.

Kriteria

Row-oriented

Column-oriented

Hybrid row-column

Pola penulisan

Pembaruan sering, INSERT real-time

Pemuatan batch (COPY, INSERT INTO SELECT)

Campuran: baik penulisan real-time maupun pemuatan batch

Pola kueri

Kueri titik, akses seluruh baris

Agregasi pada beberapa kolom, misalnya SELECT SUM(amount) ... WHERE region = 'us'

Keduanya

Kompresi

Standar

3–5x lebih tinggi daripada row-oriented

Otomatis berdasarkan metode penulisan

Persyaratan versi

Semua versi

Semua versi

Hanya V7.0

Kompatibilitas Data Transmission Service (DTS)

Diperlukan (tabel tujuan harus berorientasi baris)

Tidak didukung

Tidak didukung

Catatan

Penyimpanan hybrid baris-kolom hanya tersedia di AnalyticDB for PostgreSQL V7.0.

Tentukan model penyimpanan

Gunakan klausa WITH dalam perintah CREATE TABLE untuk mengatur model penyimpanan dan mengonfigurasi kompresi. Parameter berikut didukung.

Parameter

Deskripsi

Bawaan

Nilai yang valid

orientation

Model penyimpanan. Penyimpanan hybrid baris-kolom tidak dapat diatur di sini — gunakan USING beam sebagai gantinya.

row

row, column

appendonly

Mengaktifkan penyimpanan yang dioptimalkan untuk append. Diperlukan untuk tabel berorientasi kolom.

false

true, false

compresstype

Algoritma kompresi.

V4.3 dan V6.0: none; V7.0: auto

Lihat Kompresi data

compresslevel

Tingkat kompresi. Nilai yang lebih tinggi menghasilkan kompresi lebih baik dengan kecepatan lebih rendah.

1

19 (integer)

Tabel berorientasi baris

Secara bawaan, AnalyticDB for PostgreSQL membuat tabel berorientasi baris menggunakan model penyimpanan heap PostgreSQL. Tabel berorientasi baris dioptimalkan untuk:

  • Penulisan real-time melalui INSERT

  • Operasi UPDATE dan DELETE yang sering

  • Kueri titik dengan Indeks Pohon-B

Tabel heap (bawaan)

CREATE TABLE foo (a int, b text) DISTRIBUTED BY (a);

Tabel berorientasi baris yang dioptimalkan untuk append (AORO)

CREATE TABLE bar (a int, b text)
WITH (appendonly=true, orientation=row)
DISTRIBUTED BY (a);
Catatan

Saat menggunakan Data Transmission Service (DTS) untuk menulis data ke AnalyticDB for PostgreSQL, tabel tujuan harus berorientasi baris. DTS mendukung sinkronisasi hampir real-time untuk operasi INSERT, UPDATE, dan DELETE.

Tabel berorientasi kolom

Tabel berorientasi kolom menyimpan data berdasarkan kolom, sehingga hanya membaca kolom yang dirujuk dalam suatu kueri. Hal ini menjadikannya sangat cocok untuk beban kerja gudang data — terutama kueri yang melakukan agregasi pada sejumlah kecil kolom, seperti:

SELECT SUM(revenue), AVG(cost) FROM orders WHERE region = 'us';

Tabel berorientasi kolom memberikan rasio kompresi 3–5 kali lipat dibandingkan tabel berorientasi baris. Tabel ini kurang efisien untuk operasi insert atau update tingkat baris yang sering — gunakan metode pemuatan batch seperti COPY untuk performa terbaik.

Tabel berorientasi kolom harus dioptimalkan untuk append. Atur appendonly=true saat membuatnya.

CREATE TABLE bar (a int, b text)
WITH (appendonly=true, orientation=column)
DISTRIBUTED BY (a);

Tabel penyimpanan hybrid baris-kolom

Penting

Penyimpanan hybrid baris-kolom hanya didukung di instans AnalyticDB for PostgreSQL V7.0.

Model penyimpanan hybrid baris-kolom menggunakan Mesin penyimpanan Beam, yang menggabungkan dua lapisan penyimpanan internal:

  • Penyimpanan Delta (berorientasi baris): menangani penulisan aliran real-time melalui INSERT INTO ... VALUES. Memberikan performa penulisan yang setara dengan tabel berorientasi baris.

  • Penyimpanan Dasar (berbasis PAX, berorientasi kolom): menangani penulisan batch melalui COPY atau INSERT INTO ... SELECT. Memberikan throughput lebih tinggi untuk data massal.

Beam secara otomatis mengarahkan data masuk ke lapisan yang sesuai berdasarkan metode penulisan.

Tabel non-partisi

Membuat Tabel dengan Mesin Penyimpanan Beam

CREATE TABLE testtable (a int) USING beam;

Ubah tabel yang sudah ada agar menggunakan Mesin penyimpanan beam

ALTER TABLE testtable SET ACCESS METHOD beam;

Tabel partisi

Contoh berikut menggunakan tabel partisi dasar yang dibuat dengan penyimpanan heap:

CREATE TABLE am_partitioned(x INT, y INT)
PARTITION BY HASH (x) USING heap;

Tentukan model penyimpanan saat membuat partisi

Buat partisi dengan penyimpanan berorientasi kolom yang dioptimalkan untuk append (AOCO):

CREATE TABLE am_partitioned_1 PARTITION OF am_partitioned
FOR VALUES WITH (MODULUS 3, REMAINDER 0) USING ao_column;

Buat partisi dengan penyimpanan hybrid baris-kolom (beam):

CREATE TABLE amm_partitioned_2 PARTITION OF amm_partitioned
FOR VALUES WITH (MODULUS 3, REMAINDER 1) USING beam;

Ubah model penyimpanan partisi yang sudah ada

ALTER TABLE am_partitioned_1 SET ACCESS METHOD ao_row;

Kompresi data

Kompresi tersedia untuk tabel berorientasi kolom dan tabel berorientasi baris yang dioptimalkan untuk append (AORO) (appendonly=true). Dua tingkat kompresi didukung:

  • Kompresi tingkat tabel: menerapkan satu algoritma untuk seluruh tabel

  • Kompresi tingkat kolom: menerapkan algoritma kompresi unik untuk setiap kolom

Algoritma yang didukung berdasarkan versi

Algoritma

V4.3

V6.0

V7.0

Catatan

zstd

Tidak

Ya

Ya

zlib

Ya

Ya

Tidak

lz4

Tidak

Ya

Ya

rle_type

Ya

Ya

Tidak

Hanya untuk tabel berorientasi kolom

none

Ya

Ya

Ya

Tanpa kompresi

auto

Ya

Ya

Ya

Bawaan untuk V7.0; memilih algoritma berdasarkan atribut data

Catatan

Jika Anda menentukan algoritma QuickLZ, algoritma tersebut secara otomatis diganti dengan zlib. Algoritma rle_type hanya berlaku untuk tabel berorientasi kolom.

Contoh

Buat tabel berorientasi kolom dengan pengaturan kompresi bawaan:

CREATE TABLE am_testtable(x INT, y INT)
WITH (orientation=column);

Buat tabel berorientasi kolom dengan kompresi zlib pada level 5:

CREATE TABLE foo (a int, b text)
WITH (appendonly=true, orientation=column, compresstype=zlib, compresslevel=5);

Buat tabel berorientasi kolom dengan kompresi zstd pada level 9:

CREATE TABLE foo (a int, b text)
WITH (appendonly=true, orientation=column, compresstype=zstd, compresslevel=9);