AlloyDB Omni でカラム型エンジンを構成する

このページでは、AlloyDB Omni データベース クラスタでカラム型エンジンを有効または無効にする方法について説明します。また、列ストアに適切な初期サイズを構成する方法についても説明します。

AlloyDB カラム型エンジンのコンセプトの概要については、AlloyDB Omni カラム型エンジンの概要をご覧ください。

カラム型エンジンを有効にする

インスタンスで列エンジンを使用するには、インスタンスの google_columnar_engine.enabled フラグを on に設定します。

インスタンスにこのフラグを設定する手順は、AlloyDB Omni をコンテナで実行するか、Kubernetes クラスタで実行するかによって異なります。

単一サーバー

google_columnar_engine.enabledon に設定する手順は次のとおりです。

  1. ALTER SYSTEM PostgreSQL コマンドを実行します。

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. 列エンジンの構成を調整する場合は、データベース サーバーを再起動する前に、次のセクションの手順に沿って操作します。それ以外の場合は、次の手順でデータベース サーバーを再起動します。

  3. 構成パラメータの変更を有効にするには、AlloyDB Omni で実行中のコンテナを再起動します。

    Docker

      sudo docker restart CONTAINER_NAME

    Podman

      sudo podman restart CONTAINER_NAME

Kubernetes

google_columnar_engine.enabled フラグを on に設定するには、データベース クラスタ マニフェストを変更して、primarySpec セクションに parameters 属性を追加します。

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "15.7.0"
      primarySpec:
        parameters:
          google_columnar_engine.enabled: "on"

CLUSTER_NAME は、データベース クラスタの名前に置き換えます。これは、作成時に宣言したデータベース クラスタ名と同じです。

列ストアのサイズを構成する

インスタンスでカラム型エンジンが有効になっている間、AlloyDB Omni はインスタンスのメモリの一部を割り振り、カラム型データを保存します。高速 RAM をカラムストアに専用にすることで、AlloyDB Omni がカラム型データにできるだけ高速にアクセスできるようになります。

メモリ キャッシュとストレージ キャッシュを合わせると、カラム型エンジンの総容量を表します。

メモリを構成する

割り当てを固定サイズに設定するには、google_columnar_engine.memory_size_in_mb フラグを使用します。

AlloyDB Omni の列ストアのメモリを構成する手順は、AlloyDB Omni をコンテナで実行するか、Kubernetes クラスタで実行するかによって異なります。

単一サーバー

インスタンスに google_columnar_engine.memory_size_in_mb フラグを設定する手順は次のとおりです。

  1. ALTER SYSTEM PostgreSQL コマンドを実行してメモリを構成します。

    ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
    

    COLUMN_MEMORY_SIZE は、列ストレージの新しいサイズ(メガバイト単位)に置き換えます(例: 256)。

  2. 構成パラメータの変更を有効にするには、AlloyDB Omni で実行中のコンテナを再起動します。

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Kubernetes

google_columnar_engine.memory_size_in_mb フラグを設定するには、データベース クラスタ マニフェストを変更して、primarySpec セクションに parameters 属性を追加します。

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "15.7.0"
      primarySpec:
        parameters:
          google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"

次のように置き換えます。

  • CLUSTER_NAME: データベース クラスタの名前。これは、作成時に宣言したデータベース クラスタ名と同じです。
  • COLUMN_MEMORY_SIZE: 列ストレージの新しいサイズ(メガバイト単位)。例: 256

ストレージ キャッシュを構成する

ストレージ キャッシュを構成する前に、AlloyDB Omni ディスク キャッシュを有効にする必要があります。

AlloyDB Omni のストレージ キャッシュを有効にする手順は、AlloyDB Omni をコンテナで実行するか、Kubernetes クラスタで実行するかによって異なります。

単一サーバー

  1. ストレージ キャッシュを次のように構成します。

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    STORAGE_CACHE_SIZE は、必要なストレージ キャッシュのサイズ(メガバイト単位)に置き換えます。デフォルトでは、ディスク キャッシュの 5% が列エンジンに割り当てられます。このフラグに許可される最大値は、ディスク キャッシュの合計の 50% または 1000 * google_columnar_engine.memory_size_in_mb のいずれか小さい方です。

  2. 構成パラメータの変更を有効にするには、AlloyDB Omni で実行中のコンテナを再起動します。

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Kubernetes

データベースのストレージ キャッシュを有効にするには、データベース クラスタ マニフェストを変更して、primarySpec セクションの features セクションに columnarSpillToDisk 属性を追加します。

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "15.7.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: STORAGE_CACHE_SIZE
      ultraFastCache:
        cacheSize: ULTRAFAST_CACHE_SIZE
        genericVolume:
          storageClass: "STORAGE_CLASS_NAME"
...

次のように置き換えます。

  • CLUSTER_NAME: データベース クラスタの名前。これは、作成時に宣言したデータベース クラスタ名と同じです。
  • STORAGE_CACHE_SIZE: 列ストレージ キャッシュのサイズ(例: 5Gi)。このフィールドに値を指定しない場合、デフォルトではディスク キャッシュの 5% が列エンジンに割り当てられます。
  • ULTRAFAST_CACHE_SIZE: キャッシュのサイズ(例: 100Gi)。shared_buffers よりも大きい値にしてください。このフィールドは省略可能です。このフィールドの値を指定しない場合、AlloyDB Omni はディスク上の残りのスペースをすべて使用します。これは、コンテナ内の AlloyDB Omni と Kubernetes クラスタの両方に適用されます。測定単位の詳細については、メモリリソース ユニットをご覧ください。
  • STORAGE_CLASS_NAME: 超高速キャッシュ ボリュームのストレージ クラスの名前(例: local-storage)。

ベクトル化結合を有効にする

カラム型エンジンには、ベクトル化結合機能があります。この機能を使用すると、対象となるクエリにベクトル化処理を適用することで、結合のパフォーマンスを向上させることができます。

ベクトル化結合を有効にすると、AlloyDB クエリ プランナーは、標準の PostgreSQL ハッシュ結合演算子ではなく、ベクトル化結合演算子を適用できます。プランナーは、各方法でクエリを実行するコストを比較して、この決定を行います。

インスタンスでベクトル化結合を有効にするには、インスタンスの google_columnar_engine.enable_vectorized_join フラグを on に設定します。

インスタンスにこのフラグを設定するには、ALTER SYSTEM PostgreSQL コマンドを実行します。

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

AlloyDB Omni は、デフォルトでベクトル化された結合機能に 1 つのスレッドを割り当てます。google_columnar_engine.vectorized_join_threads フラグを大きい値に設定すると、この機能で使用できるスレッド数を増やすことができます。最大値は cpu_count * 2 です。

カラム型エンジンを手動で更新する

デフォルトでは、カラム型エンジンが有効になっていると、バックグラウンドで列ストアが更新されます。

列エンジンを手動で更新するには、次の SQL クエリを実行します。

SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');

TABLE_NAME は、手動で更新するテーブルまたはマテリアライズド ビューの名前に置き換えます。

カラム型エンジンを無効にする

インスタンスで columbar エンジンを無効にするには、google_columnar_engine.enabled フラグを off に設定します。

インスタンスにこのフラグを設定する手順は、AlloyDB Omni を単一サーバーのコンテナで実行するか、Kubernetes クラスタで実行するかによって異なります。

単一サーバー

google_columnar_engine.enabledoff に設定する手順は次のとおりです。

  1. ALTER SYSTEM PostgreSQL コマンドを実行します。
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
  1. 構成パラメータの変更を有効にするには、AlloyDB Omni で実行中のコンテナを再起動します。

Docker

AlloyDB Omni コンテナを再起動するには、docker container restart コマンドを実行します。

  sudo docker restart CONTAINER_NAME

CONTAINER_NAME は、AlloyDB Omni コンテナのインストール時に割り当てた名前に置き換えます。

Podman

AlloyDB Omni コンテナを再起動するには、podman container start コマンドを実行します。

  sudo podman restart CONTAINER_NAME

CONTAINER_NAME は、AlloyDB Omni コンテナのインストール時に割り当てた名前に置き換えます。

Kubernetes

google_columnar_engine.enabled フラグを off に設定するには、データベース クラスタ マニフェストを変更して、primarySpec セクションに parameters 属性を追加します。

  apiVersion: alloydbomni.dbadmin.goog/v1
  kind: DBCluster
  metadata:
    name: CLUSTER_NAME
  spec:
    databaseVersion: "15.7.0"
    primarySpec:
      parameters:
        google_columnar_engine.enabled: "off"

CLUSTER_NAME は、データベース クラスタの名前に置き換えます。これは、作成時に宣言したデータベース クラスタ名と同じです。

カラム型エンジンのトラブルシューティング

insufficient shared memory エラーを修正する

カラム型エンジンが使用できる十分な共有メモリがない状態で AlloyDB Omni を実行すると、次のエラーが表示されることがあります。

Insufficient shared memory for generating the columnar formats.

この問題に対処するには、AlloyDB Omni コンテナで使用可能な共有メモリの量を指定します。方法は、ホストのオペレーティング システムによって異なります。

Linux

/etc/fstab ファイルの編集などの手法を使用して、ホストマシンの /dev/shm パーティションのサイズを増やします。

macOS

新しい AlloyDB Omni コンテナをインストールし、--shm-size フラグに大きな共有メモリ値を指定します。

列にデータが入力されない問題を修正

列が列エンジンに入力されない場合は、次のいずれかです。

  • 追加する列にサポートされていないデータ型が含まれています。

  • カラム型エンジンの要件が満たされていない。

この問題のトラブルシューティングを行うには、次の手順をお試しください。

  • クエリ内のテーブルまたはマテリアライズド ビューが列エンジンにあることを確認します。
  • EXPLAIN ステートメントを使用して、カラム型エンジンの使用状況を確認します。

次のステップ