すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:テーブルストレージフォーマットの定義

最終更新日:Apr 21, 2026

AnalyticDB for PostgreSQL は、行指向、列指向、ハイブリッド行列表の 3 つのストレージモデルをサポートしています。テーブルを作成する際に、適切なモデルを選択してください。

ストレージモデルの選択

選択するモデルは、書き込みスループット、クエリパフォーマンス、圧縮率に影響します。以下の基準に基づいて決定してください。

基準

行指向

列指向

ハイブリッド行列表

書き込みパターン

頻繁な更新、リアルタイム INSERT

バッチロード (`COPY`、`INSERT INTO SELECT`)

混合:リアルタイム書き込みとバッチロードの両方

クエリパターン

ポイントクエリ、全行アクセス

少数の列に対する集計 (例:SELECT SUM(amount) ... WHERE region = 'us')

両方

圧縮

標準

行指向より 3~5 倍高い

書き込みメソッドに基づく自動選択

バージョン要件

すべてのバージョン

すべてのバージョン

V7.0 のみ

Data Transmission Service (DTS) との互換性

必須 (宛先テーブルは行指向である必要があります)

サポートされていません

サポートされていません

説明

ハイブリッド行列表ストレージは、AnalyticDB for PostgreSQL V7.0 でのみ利用可能です。

ストレージモデルの指定

CREATE TABLEWITH 句を使用して、ストレージモデルを設定し、圧縮を構成します。以下のパラメーターがサポートされています。

パラメーター

説明

デフォルト

有効な値

orientation

ストレージモデル。ハイブリッド行列表ストレージはここでは設定できません。代わりに USING beam を使用してください。

row

rowcolumn

appendonly

追記型ストレージを有効にします。列指向テーブルで必須です。

false

truefalse

compresstype

圧縮アルゴリズム。

V4.3 および V6.0:none、V7.0:auto

データ圧縮」をご参照ください

compresslevel

圧縮レベル。値が大きいほど圧縮率は高くなりますが、速度は低下します。

1

19 (整数)

行指向テーブル

デフォルトでは、AnalyticDB for PostgreSQL は PostgreSQL のヒープストレージモデルを使用して行指向テーブルを作成します。行指向テーブルは、以下のような操作に最適化されています。

  • INSERT によるリアルタイム書き込み

  • 頻繁な UPDATE および DELETE 操作

  • B ツリーインデックスを使用したポイントクエリ

ヒープテーブル (デフォルト)

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

追記型行指向 (AORO) テーブル

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

DTS を使用して AnalyticDB for PostgreSQL にデータを書き込む場合、宛先テーブルは行指向である必要があります。DTS は、INSERT、UPDATE、DELETE 操作のほぼリアルタイムの同期をサポートしています。

列指向テーブル

列指向テーブルは、データを列ごとに格納し、クエリで参照される列のみを読み取ります。これにより、データウェアハウスワークロード、特に次のような少数の列を集計するクエリに適しています。

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

列指向テーブルは、行指向テーブルの 3~5 倍の圧縮率を提供します。頻繁な行レベルの挿入や更新には効率が劣るため、最高のパフォーマンスを得るには COPY のようなバッチロード方式を使用してください。

列指向テーブルは追記型である必要があります。作成時に appendonly=true を設定してください。

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

行列混在ストレージテーブル

重要

ハイブリッド行列表ストレージは、AnalyticDB for PostgreSQL V7.0 インスタンスでのみサポートされています。

ハイブリッド行列表ストレージモデルは、2 つの内部ストレージレイヤーを組み合わせた Beam ストレージエンジンを使用します。

  • Delta ストレージ (行指向):INSERT INTO ... VALUES によるリアルタイムストリーミング書き込みを処理します。行指向テーブルに匹敵する書き込みパフォーマンスを提供します。

  • Base ストレージ (PAX ベース、列指向):COPY または INSERT INTO ... SELECT によるバッチ書き込みを処理します。バルクデータに対してより高いスループットを提供します。

Beam は、書き込みメソッドに基づいて、受信データを適切なレイヤーに自動的にルーティングします。

非パーティションテーブル

beam ストレージエンジンでテーブルを作成

CREATE TABLE testtable (a int) USING beam;

既存のテーブルを beam ストレージエンジンを使用するように変更

ALTER TABLE testtable SET ACCESS METHOD beam;

パーティションテーブル

以下の例では、ヒープストレージで作成されたベースパーティションテーブルを使用します。

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

パーティション作成時のストレージモデルの指定

追記型列指向 (AOCO) ストレージでパーティションを作成します。

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

ハイブリッド行列表 (beam) ストレージでパーティションを作成します。

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

既存のパーティションのストレージモデルの変更

ALTER TABLE am_partitioned_1 SET ACCESS METHOD ao_row;

データ圧縮

圧縮は、列指向テーブルおよび追記型行指向 (AORO) テーブル (appendonly=true) で利用できます。2 つのレベルの圧縮がサポートされています。

  • テーブルレベルの圧縮:テーブル全体に単一のアルゴリズムを適用します

  • 列レベルの圧縮:各列に固有の圧縮アルゴリズムを適用します

バージョン別のサポートされるアルゴリズム

アルゴリズム

V4.3

V6.0

V7.0

zstd

いいえ

はい

はい

zlib

はい

はい

いいえ

lz4

いいえ

はい

はい

rle_type

はい

はい

いいえ

列指向テーブルのみ

none

はい

はい

はい

圧縮なし

auto

はい

はい

はい

V7.0 のデフォルト。データ属性に基づいてアルゴリズムを選択します

説明

QuickLZ アルゴリズムを指定した場合、自動的に zlib に置き換えられます。rle_type アルゴリズムは列指向テーブルにのみ適用されます。

デフォルトの圧縮設定で列指向テーブルを作成します。

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

圧縮レベル 5 の zlib 圧縮を使用して列指向テーブルを作成します。

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

圧縮レベル 9 の zstd 圧縮を使用して列指向テーブルを作成します。

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