AlloyDB カラム型エンジンのコンセプトの概要については、AlloyDB Omni カラム型エンジンの概要をご覧ください。
カラム型エンジンを有効にする
インスタンスでカラム型エンジンを使用するには、インスタンスの google_columnar_engine.enabled
フラグを on
に設定します。
単一サーバー
google_columnar_engine.enabled
を on
に設定する手順は次のとおりです。
ALTER SYSTEM
PostgreSQL コマンドを実行します。ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
カラム型エンジンの構成を調整する場合は、データベース サーバーを再起動する前に、次のセクションの手順に沿って操作します。構成を調整しない場合は、次の手順でデータベース サーバーを再起動します。
構成パラメータの変更を有効にするには、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
フラグを設定する手順は次のとおりです。
ALTER SYSTEM
PostgreSQL コマンドを実行してメモリを構成します。ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
COLUMN_MEMORY_SIZE
は、カラム型ストレージの新しいサイズ(メガバイト単位)に置き換えます(例:256
)。構成パラメータの変更を有効にするには、AlloyDB Omni で実行中のコンテナを再起動します。
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
ストレージ キャッシュを構成する
単一サーバー
カラム型エンジンのストレージ キャッシュは、専用デバイスまたは共有デバイスで構成できます。
専用デバイス
専用デバイスで、シングル サーバー コンテナの AlloyDB Omni カラム型エンジン ストレージ キャッシュを有効にするには、ディスクをプロビジョニングしてファイル システムを作成し、AlloyDB Omni 内にキャッシュ ディレクトリをマウントしてから、カラム型ストレージ キャッシュを有効にする必要があります。
ディスクをプロビジョニングしてファイル システムを作成する
AlloyDB Omni カラム型エンジン ストレージ キャッシュのディスクをプロビジョニングしてファイル システムを作成するには、1 つのディスクまたは複数のディスクにファイル システムを作成し、AlloyDB Omni を使用してコンテナ内にマウントします。また、mdadm
や lvm
などのユーティリティを使用して、複数のディスクで容量をプールし、任意のファイル システムを使用することもできます。次の手順では、NVMe SSD を使用する Ubuntu Compute Engine インスタンスで lvm
と ext4
を使用する方法を説明します。
使用可能なすべての物理デバイスからボリューム グループを作成します。
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
-
前の手順のボリューム グループの空き容量から論理ボリュームを作成するには、次のコマンドを使用します。
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
LOGICAL_VOLUME
は、LVM によってパーティションとして扱われる論理ボリュームの名前に置き換えます。例:omni_disk_cache_device
- 論理ボリュームに
ext4
ファイル システムを作成します。必要であれば、データの安全性に応じて他のext4
オプションを指定することもできます。sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
ホストマシンのマウント ポイントとして機能するディレクトリを作成し、ファイル システムをマウントするには、次のコマンドを使用します。
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)パラメータを設定します。
カラム型ストレージ キャッシュ ディレクトリを設定します。
ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;
OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
は、AlloyDB Omni でカラム型エンジン ストレージ キャッシュ ファイルを保存する専用ディレクトリの絶対パスに置き換えます。このディレクトリが存在し、データベース ユーザーに適切な書き込み権限があることを確認します。ストレージ キャッシュ サイズを構成します。
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
STORAGE_CACHE_SIZE
は、必要なカラム型ストレージ キャッシュのサイズ(メガバイト単位)に置き換えます。デフォルトでは、専用デバイスのサイズ全体がカラム型エンジンに割り当てられ、ディスク キャッシュには影響しません。このフラグに許可される最大値は、1,000 ×google_columnar_engine.memory_size_in_mb
のいずれか小さい方です。構成パラメータの変更を有効にするには、AlloyDB Omni で実行中のコンテナを再起動します。
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
共有デバイス
ディスク キャッシュを使用してカラム型ストレージ キャッシュを共有デバイスに構成する前に、AlloyDB Omni ディスク キャッシュを有効にする必要があります。
共有デバイスでストレージ キャッシュを次のように構成します。
ストレージ キャッシュを構成します。
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
のいずれか小さい方です。構成パラメータの変更を有効にするには、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.enabled
を off
に設定する手順は次のとおりです。
ALTER SYSTEM
PostgreSQL コマンドを実行します。
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
- 構成パラメータの変更を有効にするには、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 コンテナのインストール時に割り当てた名前に置き換えます。
次のステップ
カラム型エンジン データベース フラグの一覧を確認する。
Google Codelab チュートリアルの AlloyDB Omni でカラム型エンジンを使用して分析クエリを高速化する に沿って学習する。