全部产品
Search
文档中心

AnalyticDB:Tentukan model penyimpanan untuk tabel

更新时间:Jun 26, 2025

AnalyticDB for PostgreSQL mendukung tiga model penyimpanan tabel: berorientasi baris, berorientasi kolom, dan hibrida baris-kolom. Anda dapat memilih model yang sesuai dengan kebutuhan bisnis saat membuat tabel. Penyimpanan berorientasi baris cocok untuk skenario pembaruan data sering atau penulisan real-time menggunakan pernyataan INSERT. Penyimpanan berorientasi kolom ideal untuk gudang data, seperti kueri dan agregasi pada sejumlah kecil kolom.

Tentukan model penyimpanan tabel

Untuk menentukan tabel berorientasi baris atau kolom, gunakan klausa WITH dalam pernyataan CREATE TABLE. Anda juga dapat menentukan algoritma kompresi dan tingkat kompresi di klausa ini. Tabel berikut menjelaskan parameter tersebut.

Parameter

Deskripsi

Nilai valid

orientation

Model penyimpanan tabel. Nilai valid: row dan column. Nilai default: row.

Catatan

Anda tidak dapat menentukan model penyimpanan hibrida baris-kolom menggunakan klausa WITH. Untuk informasi tentang cara mengonfigurasi penyimpanan hibrida baris-kolom, lihat bagian "Tabel penyimpanan hibrida baris-kolom" dari topik ini.

  • row

  • column

compresstype

Algoritma kompresi tabel.

Nilai default untuk AnalyticDB for PostgreSQL V4.3 dan V6.0: none. Tidak ada algoritma kompresi yang digunakan.

Nilai default untuk AnalyticDB for PostgreSQL V7.0: auto. Algoritma kompresi yang paling sesuai secara otomatis dipilih berdasarkan atribut data dan konfigurasi sistem.

  • V4.3: zlib, rle_type, none dan auto.

  • V6.0: zstd, zlib, rle_type, lz4, none dan auto.

  • V7.0: zstd, lz4, none, dan auto.

compresslevel

Tingkat kompresi tabel. Nilai yang lebih tinggi mencapai kompresi yang lebih baik tetapi mengurangi kecepatan kompresi. Nilai default: 1.

1 hingga 9. Nilainya harus berupa bilangan bulat.

appendonly

Menentukan apakah akan mengaktifkan penyimpanan dioptimalkan-append. Nilai default: false.

  • true

  • false

Tabel berorientasi baris

Secara default, AnalyticDB for PostgreSQL menggunakan model penyimpanan heap PostgreSQL untuk tabel berorientasi baris. Model ini digunakan untuk data yang sering diperbarui atau ditulis secara real-time menggunakan pernyataan INSERT. Tabel berorientasi baris dengan indeks Pohon-B memberikan kinerja pengambilan data tinggi untuk kueri titik.

Contoh

  • Buat tabel berorientasi baris menggunakan model penyimpanan heap.

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

    Saat menggunakan Data Transmission Service (DTS) untuk menulis data ke instance AnalyticDB for PostgreSQL, tabel tujuan harus berupa tabel berorientasi baris. AnalyticDB for PostgreSQL DTS mendukung sinkronisasi data hampir real-time. Selain data yang dimasukkan melalui pernyataan INSERT, DTS dapat menyinkronkan data yang diperbarui melalui pernyataan SQL seperti UPDATE dan DELETE.

  • Buat tabel berorientasi baris dioptimalkan-append (AORO) menggunakan parameter orientation dan appendonly.

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

Tabel berorientasi kolom

Tabel berorientasi kolom menyimpan data berdasarkan kolom. Saat mengakses data, hanya kolom relevan yang dibaca. Model ini cocok untuk skenario gudang data, seperti kueri dan agregasi pada sejumlah kecil kolom. Dalam skenario ini, tabel berorientasi kolom memberikan kinerja I/O tinggi. Namun, model ini kurang efisien untuk skenario dengan pembaruan data sering. Disarankan menggunakan metode pemuatan batch, seperti pernyataan COPY, untuk memasukkan data ke tabel berorientasi kolom. Rasio kompresi data tabel berorientasi kolom mencapai tiga hingga lima kali lipat dari tabel berorientasi baris.

Contoh

Tabel berorientasi kolom harus berupa tabel dioptimalkan-append. Untuk membuat tabel berorientasi kolom, atur parameter appendonly menjadi true.

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

Tabel penyimpanan hibrida baris-kolom

Penting

Hanya instance AnalyticDB for PostgreSQL V7.0 yang mendukung tabel penyimpanan hibrida baris-kolom.

Tabel partisi dan non-partisi mendukung penyimpanan hibrida baris-kolom.

Tabel non-partisi

Untuk menerapkan penyimpanan hibrida baris-kolom, atur mesin penyimpanan tabel non-partisi ke beam.

Mesin penyimpanan Beam terdiri dari penyimpanan Delta berorientasi baris dan penyimpanan Base berorientasi kolom berbasis PAX. Saat menulis data, model penyimpanan dipilih berdasarkan metode penulisan. Jika menggunakan metode streaming real-time seperti pernyataan INSERT INTO VALUES, data ditulis ke penyimpanan Delta berorientasi baris untuk mencapai kinerja penulisan real-time setara tabel berorientasi baris. Jika menggunakan metode batch seperti pernyataan COPY atau INSERT INTO SELECT, data ditulis ke penyimpanan Base berorientasi kolom untuk meningkatkan throughput dan kinerja penulisan.

Atur mesin penyimpanan ke beam saat Anda membuat tabel

CREATE TABLE testtable (a int) USING beam;

Ubah mesin penyimpanan tabel yang ada menjadi beam

ALTER TABLE testtable SET ACCESS METHOD beam;

Tabel partisi

Contoh berikut menunjukkan cara mengonfigurasi tabel penyimpanan hibrida baris-kolom. Contoh-contoh ini menggunakan tabel am_partitioned.

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

Tentukan model penyimpanan partisi saat Anda membuat partisi

  • Atur model penyimpanan partisi am_partitioned_1 ke penyimpanan berorientasi kolom dioptimalkan-append (AOCO).

    CREATE TABLE am_partitioned_1 PARTITION OF am_partitioned FOR VALUES WITH (MODULUS 3,REMAINDER 0) USING ao_column;
  • Setelah dibuat, partisi am_partitioned_2 berada dalam model penyimpanan hibrida baris-kolom.

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

Ubah model penyimpanan partisi yang ada

Ubah model penyimpanan partisi am_partitioned_1 menjadi penyimpanan AORO.

ALTER TABLE am_partitioned_1 SET ACCESS METHOD ao_row;

Kompresi data

Kompresi data digunakan untuk tabel berorientasi kolom atau tabel AORO dengan parameter appendonly diatur ke true. Dua jenis kompresi tersedia:

  • Kompresi tingkat tabel.

  • Kompresi tingkat kolom. Anda dapat menerapkan algoritma kompresi unik untuk setiap kolom.

AnalyticDB for PostgreSQL mendukung algoritma kompresi berikut:

  • V4.3: zlib, rle_type, none, dan auto.

  • V6.0: zstd, zlib, rle_type, lz4, none, dan auto.

  • V7.0: zstd, lz4, none, dan auto.

Catatan

Anda juga dapat menentukan algoritma kompresi QuickLZ, tetapi algoritma tersebut diganti dengan zlib. Algoritma rle_type hanya cocok untuk tabel berorientasi kolom.

Contoh

Buat tabel berorientasi kolom.

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

Buat tabel berorientasi kolom menggunakan algoritma kompresi zlib dengan tingkat kompresi 5.

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

Buat tabel berorientasi kolom menggunakan algoritma kompresi zstd dengan tingkat kompresi 9.

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