このページでは、AlloyDB Omni 列エンジンについて説明し、コンテナと Kubernetes クラスタのインストールでエンジンを使用する方法について説明します。このページは、PostgreSQL に精通していることを前提としています。
AlloyDB Omni カラム型エンジンは、次のコンポーネントを提供することで、スキャン、結合、集計の SQL クエリ処理を高速化します。
選択した列のテーブルデータとマテリアライズド ビュー データが含まれ、列指向形式に再編成された列ストア。
クエリで列ストアの使用をサポートする、カラム型クエリ プランナーと実行エンジン。
列エンジンは、プライマリ インスタンス、読み取りプール インスタンス、またはその両方で使用できます。自動列化を使用してワークロードを分析し、パフォーマンスの向上が最も大きい列を列ストアに自動的に入力することもできます。
特定のクエリで列エンジンを使用するには、クエリで参照されるすべての列(結合、スキャンなど)が列ストアに存在している必要があります。
デフォルトでは、列エンジンはインスタンスのメモリの 1 GB を使用するように設定されています。ワークロード、メモリ使用量、読み取りプールが構成されているかどうかに応じて、プライマリ インスタンスでの列エンジンのメモリ割り当てを減らし、読み取りプール インスタンスにメモリを割り当てることができます。
列エンジンによるメモリ使用量を表示してモニタリングするには、列ストアのメモリ使用量を表示するをご覧ください。列ストアで使用されるメモリサイズを変更するには、列ストアのサイズを構成するをご覧ください。インスタンスに推奨されるカラム型エンジンのメモリサイズを確認するには、列ストアのメモリサイズの推奨事項をご覧ください。
カラム型エンジンのメリットを享受できるクエリタイプ
特定のクエリでは、カラム型エンジンのメリットを享受できます。列エンジンのメリットを最も享受できるオペレーションとそのクエリパターンのリストは次のとおりです。
オペレーション | クエリパターン |
---|---|
テーブル スキャン | WHERE 句などの選択フィルタ。大規模なテーブルまたはマテリアライズド ビューの少数の列。 LIKE 、SUBSTR 、TRIM などの式。 |
集計関数 | SUM 、MIN 、MAX 、AVG 、COUNT などの式のみ。列スキャンのクエリの開始時。 グループ化なしまたは列でグループ化。 |
ORDER-BY |
演算子が列スキャンのクエリの先頭にある場合のみ。 |
SORT |
演算子がカラム型スキャンのクエリの先頭にあり、テーブルまたはマテリアライズド ビューのベース列のみを並べ替える場合に限られます。 |
LIMIT |
演算子が列スキャンのクエリの先頭にあり、SORT 演算子または GROUP BY 演算子の前にのみ適用されます。 |
INNER HASH JOIN |
使用されるキーが列で、結合修飾子が使用されていない場合のみ。 |
選択結合 | 結合が列スキャンのクエリの先頭にある場合のみ。 |
カラム型エンジンで最も適切に機能するクエリ、クエリでカラム型エンジンが使用されたかどうか、使用方法の詳細については、EXPLAIN
を使用してカラム型エンジンの使用を確認するをご覧ください。
カラム型エンジンを使用する
AlloyDB Omni インスタンスでカラム型エンジンを使用する手順は、次のとおりです。
インスタンスでエンジンを有効にする。
エンジンの有効化は 1 回限りの操作であり、データベースの再起動が必要です。
列ストアに列を追加します。
列ストアに列を追加するには、次のいずれかの方法を使用します。
g_columnar_relations
ビューを使用して、列ストアの内容を追跡できます。列を追加した後、EXPLAIN
ステートメントを使用して、SQL クエリでの列エンジンの使用状況を確認できます。
カラム型エンジンの使用方法の詳細については、カラム型エンジンを構成するをご覧ください。
列ストアに追加できるデータ
列ストアに列を追加する際に使用できるデータ型とデータソースには、いくつかの制限があります。
サポートされるデータタイプ
列エンジンは、次の組み込みデータ型を持つ列のみをサポートします。
array
bigint
boolean
bytea
char
date
decimal
double precision
enum
float4
float8
integer
json
jsonb
numeric
real
serial
short
smallint
text
timestamp
uuid
varchar
列エンジンは、サポートされていないデータ型の列を手動で列ストアに追加しようとする試みを無視します。
サポートされていないデータソース
列エンジンでは、次の属性をデータソースとするテーブルまたはマテリアライズド ビューはサポートされていません。
リーフ以外のパーティション分割テーブル
外部テーブル
行数が 5,000 行未満のテーブルまたはビュー
カラム型エンジンの制限事項
- インデックスのある列に対して分析クエリを実行している場合、AlloyDB Omni オプティマイザーは行ストアを使用することを選択することがあります。
- 列ストアに手動で追加された列は自動的に削除されません。手動で追加した列を強制的に削除するには、インスタンスで
google_columnar_engine_drop
を使用します。 - 自動列化では、クエリの使用状況に基づいて列が動的に追加または削除される場合があります。
- 列形式エンジンでサポートされているデータ型は限られています。サポートされているデータ型については、サポートされているデータ型をご覧ください。
行の更新が頻繁に行われると、列データが無効になります。カラムストア内のテーブルまたはマテリアライズド ビューを検証するには、更新頻度を減らすか、カラムエンジンの更新をより頻繁にスケジュールします。
g_columnar_relations
のinvalid_block_count
列とtotal_block_count
列を比較して、テーブルまたはビューに影響があるかどうかを確認できます。テーブルまたはビューが頻繁に変更される場合や、大量の変更がある場合は、invalid_block_count
が高くなります。