このページでは、AlloyDB Omni データベース クラスタで列エンジンを有効または無効にする方法について説明します。また、列ストアに適切な初期サイズを構成する方法についても説明します。
Google Cloudで AlloyDB for PostgreSQL を使用するときに列エンジンを使用するには、列エンジンを構成するをご覧ください。
AlloyDB カラム型エンジンのコンセプトの概要については、AlloyDB カラム型エンジンについてをご覧ください。
カラム型エンジンを有効にする
インスタンスで列エンジンを使用するには、インスタンスの google_columnar_engine.enabled
フラグを on
に設定します。
ALTER SYSTEM
PostgreSQL コマンドを実行します。ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
列エンジンの構成を調整する場合は、データベース サーバーを再起動する前に、次のセクションの手順に沿って操作します。それ以外の場合は、次の 2 つの手順でデータベース サーバーを再起動します。
列ストアのサイズを構成する
インスタンスでカラム型エンジンが有効になっている間、AlloyDB はインスタンスのメモリの一部を割り振り、カラム型データを保存します。高速 RAM をカラムストアに専用にすることで、AlloyDB がカラム型データにできるだけ高速にアクセスできます。
google_columnar_engine.memory_size_in_mb
フラグを使用して、割り当てを固定の特定のサイズに設定することもできます。インスタンスにこのフラグを設定する手順は次のとおりです。
ALTER SYSTEM
PostgreSQL コマンドを実行します。ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_STORE_SIZE;
COLUMN_STORE_SIZE
は、列ストアの新しいサイズ(メガバイト単位)に置き換えます。
ベクトル化結合を有効にする
カラム型エンジンには、ベクトル化結合機能があります。この機能を使用すると、対象となるクエリにベクトル化処理を適用することで、結合のパフォーマンスを向上させることができます。
ベクトル化結合を有効にすると、AlloyDB クエリ プランナーは、標準の PostgreSQL ハッシュ結合演算子ではなく、ベクトル化結合演算子を適用できます。プランナーは、どちらの方法でクエリを実行した場合の費用を比較して、この決定を行います。
インスタンスでベクトル化結合を有効にするには、インスタンスの google_columnar_engine.enable_vectorized_join
フラグを on
に設定します。
ALTER SYSTEM
PostgreSQL コマンドを実行します。
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
AlloyDB は、デフォルトでベクトル化結合機能に 1 つのスレッドを割り当てます。google_columnar_engine.vectorized_join_threads
フラグを大きい値に設定すると、この機能で使用できるスレッド数を増やすことができます。
カラム型エンジンを手動で更新する
デフォルトでは、列エンジンは、有効になっている場合にバックグラウンドで列ストアを自動的に更新するように設定されています。自動更新で無効なブロックが多い関係が更新されないなど、特定の状況では、列ストアを手動で更新する必要があります。
列エンジンを手動で更新するには、次の SQL クエリを実行します。
SELECT google_columnar_engine_refresh('TABLE_NAME');
TABLE_NAME
は、手動で更新するテーブルまたはマテリアライズド ビューの名前に置き換えます。
カラム型エンジンを無効にする
インスタンスで columbar エンジンを無効にするには、google_columnar_engine.enabled
フラグを off
に設定します。
ALTER SYSTEM
PostgreSQL コマンドを実行します。ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
カラム型エンジンのトラブルシューティング
「共有メモリが不足しています」というエラーを修正する
カラム型エンジンが使用できる十分な共有メモリがない状態で AlloyDB Omni を実行すると、次のエラーが表示されることがあります。
Insufficient shared memory for generating the columnar formats.
この問題に対処するには、AlloyDB Omni コンテナで使用可能な共有メモリの量を指定します。方法は、ホストのオペレーティング システムによって異なります。
Linux
/etc/fstab
ファイルの編集などの手法を使用して、ホストマシンの /dev/shm
パーティションのサイズを増やします。
macOS
--shm-size
フラグに大きな共有メモリ値を指定して、新しい AlloyDB Omni コンテナをインストールします。
列にデータが入力されない問題を修正
列が列エンジンに入力されない場合は、次のいずれかの状況が考えられます。
追加する列にサポートされていないデータ型が含まれています。
カラム型エンジンの要件が満たされていない。
この問題の原因を特定するには、次の手順を試してください。
クエリ内のテーブルまたはマテリアライズド ビューが列エンジンにあることを確認します。
EXPLAIN
ステートメントを使用して、カラム型エンジンの使用状況を確認します。
次のステップ
列エンジン データベース フラグの一覧をご覧ください。
自動列化について学習する。