このページでは、AlloyDB Omni データベース クラスタでカラム型エンジンを有効または無効にする方法について説明します。また、列ストアに適切な初期サイズを構成する方法についても説明します。
AlloyDB カラム型エンジンのコンセプトの概要については、AlloyDB Omni カラム型エンジンの概要をご覧ください。
カラム型エンジンを有効にする
インスタンスで列エンジンを使用するには、インスタンスの google_columnar_engine.enabled
フラグを on
に設定します。
インスタンスにこのフラグを設定する手順は、AlloyDB Omni をコンテナで実行するか、Kubernetes クラスタで実行するかによって異なります。
単一サーバー
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
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
フラグを設定する手順は次のとおりです。
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
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 クラスタで実行するかによって異なります。
単一サーバー
ストレージ キャッシュを次のように構成します。
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 のいずれか小さい方です。構成パラメータの変更を有効にするには、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.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 コンテナのインストール時に割り当てた名前に置き換えます。
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
フラグに大きな共有メモリ値を指定します。
列にデータが入力されない問題を修正
列が列エンジンに入力されない場合は、次のいずれかです。
追加する列にサポートされていないデータ型が含まれています。
カラム型エンジンの要件が満たされていない。
この問題のトラブルシューティングを行うには、次の手順をお試しください。
次のステップ
列エンジン データベース フラグの一覧をご覧ください。
AlloyDB Omni でカラム型エンジンを使用して分析クエリを高速化する Google Codelab チュートリアルに沿って学習します。