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

ドキュメントのバージョンを選択してください。

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

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

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

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

単一サーバー

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

カラム型ストアのサイズを構成する

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

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

メモリを構成する

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

単一サーバー

インスタンスに 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

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

単一サーバー

カラム型エンジンのストレージ キャッシュは、専用デバイスまたは共有デバイスで構成できます。

専用デバイス

専用デバイスで、シングル サーバー コンテナの AlloyDB Omni カラム型エンジン ストレージ キャッシュを有効にするには、ディスクをプロビジョニングしてファイル システムを作成し、AlloyDB Omni 内にキャッシュ ディレクトリをマウントしてから、カラム型ストレージ キャッシュを有効にする必要があります。

ディスクをプロビジョニングしてファイル システムを作成する

AlloyDB Omni カラム型エンジン ストレージ キャッシュのディスクをプロビジョニングしてファイル システムを作成するには、1 つのディスクまたは複数のディスクにファイル システムを作成し、AlloyDB Omni を使用してコンテナ内にマウントします。また、mdadmlvm などのユーティリティを使用して、複数のディスクで容量をプールし、任意のファイル システムを使用することもできます。次の手順では、NVMe SSD を使用する Ubuntu Compute Engine インスタンスで lvmext4 を使用する方法を説明します。

  1. 使用可能なすべての物理デバイスからボリューム グループを作成します。

    nvme_prefix="STORAGE_PREFIX"
    nvme_list=$(ls "$nvme_prefix"*)
    sudo vgcreate VOLUME_GROUP ${nvme_list}

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

    • STORAGE_PREFIX: NVMe(Non-Volatile Memory Express)インターフェースを使用して仮想マシンにアタッチされるターゲット ローカル ディスクパスの接頭辞。たとえば、 Google Cloudでは、NVMe デバイスのパスは常に /dev/nvme0n で始まります。
    • VOLUME_GROUP: SSD が結合されるボリューム グループの名前。例: omni-disk-cache-volume
  2. 前の手順のボリューム グループの空き容量から論理ボリュームを作成するには、次のコマンドを使用します。

    sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP

    LOGICAL_VOLUME は、LVM によってパーティションとして扱われる論理ボリュームの名前に置き換えます。例: omni_disk_cache_device

  3. 論理ボリュームに ext4 ファイル システムを作成します。必要であれば、データの安全性に応じて他の ext4 オプションを指定することもできます。
    sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
  4. ホストマシンのマウント ポイントとして機能するディレクトリを作成し、ファイル システムをマウントするには、次のコマンドを使用します。

    sudo mkdir /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
    sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY

    OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY は、マウント ポイントとして機能するディレクトリの名前またはディレクトリのパスに置き換えます。例: omni_columnar_storage_cache_directory

AlloyDB Omni 内にカラム型ストレージ キャッシュ ディレクトリをマウントする

コンテナで実行されている AlloyDB Omni のディスク キャッシュを有効にする前に、AlloyDB Omni 内にキャッシュ ディレクトリをマウントする必要があります。

Docker イメージから AlloyDB Omni をインストールしてカスタマイズする方法については、AlloyDB Omni のインストールをカスタマイズするをご覧ください。

AlloyDB Omni を実行している Docker コンテナ内に OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY をマウントするには、次のコマンドを使用します。

Docker

  sudo docker run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d google/alloydbomni

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

  • CONTAINER_NAME: 新しい AlloyDB Omni コンテナに割り当てる名前。例: my-omni
  • PASSWORD: PostgreSQL データベースの root 管理者のパスワード。
  • DATA_DIR: AlloyDB Omni がデータ ディレクトリに使用するファイル システムのパス。
  • CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: ホストマシンのマウント ポイントにマッピングされる AlloyDB Omni コンテナ内のキャッシュ ディレクトリ。たとえば、コンテナ内のキャッシュ ディレクトリの値(OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY に似た /omni_disk_cache_directory または /disk/cache/inside/container)に基づきます。

Podman

  podman run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d docker.io/google/alloydbomni

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

  • CONTAINER_NAME: 新しい AlloyDB Omni コンテナに割り当てる名前。例: my-omni
  • PASSWORD: PostgreSQL データベースの root 管理者のパスワード。
  • CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: ホストマシンのマウント ポイントにマッピングされる AlloyDB Omni コンテナ内のキャッシュ ディレクトリ。たとえば、コンテナ内のキャッシュ ディレクトリの値(OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY に似た /omni_columnar_storage_cache_directory または /disk/cache/inside/container)に基づきます。

マウントされた OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY に完全アクセス権を付与するには、次のコマンドを使用します。

Docker

  sudo docker exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  sudo docker exec -it CONTAINER_NAME chmod -R a+rw  /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  

Podman

  sudo podman exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  sudo podman exec -it CONTAINER_NAME chmod -R a+rw  /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  

コンテナで実行されている AlloyDB Omni の AlloyDB Omni カラム型ストレージ キャッシュを有効にする

データベースの専用デバイスで AlloyDB Omni カラム型ストレージ キャッシュを有効にするには、マウントされたキャッシュ ディレクトリに Docker コンテナ内からアクセスできることを確認してから、適切な Grand Unified Configuration(GUC)パラメータを設定します。

  1. カラム型ストレージ キャッシュ ディレクトリを設定します。

    ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;
    

    OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY は、AlloyDB Omni でカラム型エンジン ストレージ キャッシュ ファイルを保存する専用ディレクトリの絶対パスに置き換えます。このディレクトリが存在し、データベース ユーザーに適切な書き込み権限があることを確認します。

  2. ストレージ キャッシュ サイズを構成します。

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    STORAGE_CACHE_SIZE は、必要なカラム型ストレージ キャッシュのサイズ(メガバイト単位)に置き換えます。デフォルトでは、専用デバイスのサイズ全体がカラム型エンジンに割り当てられ、ディスク キャッシュには影響しません。このフラグに許可される最大値は、1,000 × google_columnar_engine.memory_size_in_mb のいずれか小さい方です。

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

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

共有デバイス

ディスク キャッシュを使用してカラム型ストレージ キャッシュを共有デバイスに構成する前に、AlloyDB Omni ディスク キャッシュを有効にする必要があります。

共有デバイスでストレージ キャッシュを次のように構成します。

  1. ストレージ キャッシュを構成します。

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

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

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

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

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

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

ベクトル化結合を有効にすると、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 は、手動で更新するテーブルまたはマテリアライズド ビューの名前に置き換えます。

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

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

単一サーバー

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 コンテナのインストール時に割り当てた名前に置き換えます。

次のステップ