AlloyDB Omni のカラム型エンジンの概要

このページでは、AlloyDB Omni カラム型エンジンについて説明し、コンテナと Kubernetes クラスタのインストールでエンジンを使用する方法について説明します。このページは、PostgreSQL に精通していることを前提としています。

AlloyDB Omni カラム型エンジンは、次のコンポーネントを提供することで、スキャン、結合、集計の SQL クエリ処理を高速化します。

  • 選択した列のテーブルデータとマテリアライズド ビュー データが含まれ、列指向の形式に再編成されたカラム型ストア。

  • クエリでカラム型ストアの使用をサポートする、カラム型クエリ プランナーと実行エンジン。

カラム型エンジンは、プライマリ インスタンス、読み取りプール インスタンス、またはその両方で使用できます。自動的なカラム化を使用してワークロードを分析し、パフォーマンスの向上が最も大きい列をカラム型ストアに自動的にデータを入力することもできます。

特定のクエリでカラム型エンジンを使用するには、クエリで参照されるすべての列(結合、スキャンなど)がカラム型ストアに存在している必要があります。

デフォルトでは、カラム型エンジンはインスタンスのメモリの 1 GB を使用するように設定されています。ワークロード、メモリ使用量、読み取りプールが構成されているかどうかに応じて、プライマリ インスタンスでのカラム型エンジンのメモリ割り当てを減らし、読み取りプール インスタンスにメモリを割り当てることが可能です。

カラム型エンジンによるメモリ使用量を表示してモニタリングするには、カラム型ストアのメモリ使用量を表示するをご覧ください。カラム型ストアで使用されるメモリサイズを変更するには、カラム型ストアのサイズを構成するをご覧ください。インスタンスに推奨されるカラム型エンジンのメモリサイズを確認するには、カラム型ストアのメモリサイズの推奨事項をご覧ください。

カラム型エンジンのメリットを享受できるクエリタイプ

特定のクエリでは、カラム型エンジンのメリットを享受できます。カラム型エンジンのメリットを最も享受できるオペレーションとそのクエリパターンのリストは次のとおりです。

オペレーション クエリパターン
テーブル スキャン WHERE 句などの選択フィルタ。
大規模なテーブルまたはマテリアライズド ビューの少数の列。
LIKESUBSTRTRIM などの式。
集計関数 SUMMINMAXAVGCOUNT などの式のみ。
カラム型スキャンのクエリの開始時。
グループ化なし、または列でグループ化。
ORDER-BY 演算子がカラム型スキャンのクエリの先頭にある場合のみ。
SORT 演算子がカラム型スキャンのクエリの先頭にあり、テーブルまたはマテリアライズド ビューのベース列のみを並べ替える場合に限られます。
LIMIT 演算子が列スキャンのクエリの先頭にあり、SORT 演算子または GROUP BY 演算子の前にのみ適用されます。
INNER HASH JOIN 使用されるキーが列で、結合修飾子が使用されていない場合のみ。
選択結合 結合が列スキャンのクエリの先頭にある場合のみ。

カラム型エンジンで最も適切に機能するクエリ、クエリでカラム型エンジンが使用されたかどうか、使用方法の詳細については、EXPLAIN を使用してカラム型エンジンの使用を確認するをご覧ください。

カラム型エンジンを使用する

AlloyDB Omni インスタンスでカラム型エンジンを使用するには、概略的には以下の手順を実行します。

  1. インスタンスでエンジンを有効にする

    エンジンの有効化は 1 回限りの操作であり、データベースの再起動が必要です。

  2. カラム型ストアに列を追加します。

    カラム型ストアに列を追加するには、次のいずれかの方法を使用します。

  3. 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_relationsinvalid_block_count 列と total_block_count 列を比較して、テーブルまたはビューに影響があるかどうかを確認できます。テーブルまたはビューの変更が頻繁または大量に発生する場合、invalid_block_count は高くなります。

次のステップ