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

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

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

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

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

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

google_columnar_engine.enabled パラメータを on に設定する手順は次のとおりです。

  1. DBCluster データベース クラスタ マニフェストを開きます。

  2. primarySpec セクションで、parameters ブロックに google_columnar_engine.enabled パラメータを追加します。

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "on"
    

    DB_CLUSTER_NAME は、データベース クラスタの名前に置き換えます。

  3. RPM オーケストレーターは、パラメータの変更を適用するためにデータベースを自動的に再起動します。次のいずれかの方法で、更新された DBCluster マニフェストを適用します。

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

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

    • DEPLOYMENT_SPEC_PATH: デプロイ仕様ディレクトリのパス。
    • DBCLUSTER_SPECIFICATION: 変更した DBCluster マニフェストのパス。

    Ansible

    1. update.yml プレイブック ファイルを作成します。

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

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

      • SSH_USER: SSH を使用してクラスタ内のノードに接続するために使用するユーザー名。
      • SSH_KEY_PATH: ノードへの接続に使用される SSH 秘密鍵ファイルのローカルパス。
    2. コントロール ノードからプレイブックを実行し、リソース仕様を追加の変数として渡します。

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

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

      • DEPLOYMENT_SPEC_PATH: デプロイ仕様ディレクトリのパス。
      • DBCLUSTER_SPECIFICATION: 変更した DBCluster マニフェストのパス。

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

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

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

メモリを構成する

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

google_columnar_engine.memory_size_in_mb パラメータを設定する手順は次のとおりです。

  1. DBCluster データベース クラスタ マニフェストを開きます。

  2. primarySpec セクションで、カラム型エンジンの構成を parameters ブロックに追加します。

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "on"
            google_columnar_engine.memory_size_in_mb: "MEMORY_SIZE_MB"
    

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

    • DB_CLUSTER_NAME: データベース クラスタの名前。
    • MEMORY_SIZE_MB: カラム型エンジンに割り当てるメモリ量(メガバイト単位)。
  3. RPM オーケストレーターは、パラメータの変更を適用するためにデータベースを自動的に再起動します。次のいずれかの方法で、更新された DBCluster マニフェストを適用します。

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

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

    • DEPLOYMENT_SPEC_PATH: デプロイ仕様ディレクトリのパス。
    • DBCLUSTER_SPECIFICATION: 変更した DBCluster マニフェストのパス。

    Ansible

    1. update.yml プレイブック ファイルを作成します。

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

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

      • SSH_USER: SSH を使用してクラスタ内のノードに接続するために使用するユーザー名。
      • SSH_KEY_PATH: ノードへの接続に使用される SSH 秘密鍵ファイルのローカルパス。
    2. コントロール ノードからプレイブックを実行し、リソース仕様を追加の変数として渡します。

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

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

      • DEPLOYMENT_SPEC_PATH: デプロイ仕様ディレクトリのパス。
      • DBCLUSTER_SPECIFICATION: 変更した DBCluster マニフェストのパス。

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

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

専用デバイス

カラム型エンジンのストレージ キャッシュ専用のデバイスを構成する手順は次のとおりです。

  1. DBCluster データベース クラスタ マニフェストを開きます。

  2. primarySpec セクションで、cacheSizelocalVolume.path を含む columnarSpillToDisk 属性を features ブロックに追加します。

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          features:
            columnarSpillToDisk:
              cacheSize: STORAGE_CACHE_SIZE
              localVolume:
                path: COLUMNAR_CACHE_DIR_PATH
    

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

    • DB_CLUSTER_NAME: データベース クラスタの名前。
    • STORAGE_CACHE_SIZE: カラム型エンジン ストレージ キャッシュのサイズ上限(例: 50Gi)。
    • COLUMNAR_CACHE_DIR_PATH: カラム型エンジン ストレージ キャッシュ専用ディレクトリのファイル システム パス(例: /mnt/disks/columnarcache)。
  3. alloydbctl または Ansible を使用して、更新された DBCluster マニフェストを適用します。

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

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

    • DEPLOYMENT_SPEC_PATH: デプロイ仕様ディレクトリのパス。
    • DBCLUSTER_SPECIFICATION: 変更した DBCluster マニフェストのパス。

    Ansible

    1. update.yml プレイブック ファイルを作成します。

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

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

      • SSH_USER: SSH を使用してクラスタ内のノードに接続するために使用するユーザー名。
      • SSH_KEY_PATH: ノードへの接続に使用される SSH 秘密鍵ファイルのローカルパス。
    2. コントロール ノードからプレイブックを実行し、リソース仕様を追加の変数として渡します。

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

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

      • DEPLOYMENT_SPEC_PATH: デプロイ仕様ディレクトリのパス。
      • DBCLUSTER_SPECIFICATION: 変更した DBCluster マニフェストのパス。

共有デバイス

columnarSpillToDisklocalVolume.path を指定しない場合、カラム型エンジンのストレージ キャッシュは ultraFastCache で構成されたディスク キャッシュ ストレージを共有します。

共有デバイスでカラム型エンジンのストレージ キャッシュを構成するには、次の手順を行います。

  1. DBCluster データベース クラスタ マニフェストを開きます。

  2. primarySpec セクションで、features ブロックに columnarSpillToDisk 属性と ultraFastCache 属性を追加します。

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          features:
            columnarSpillToDisk:
              cacheSize: STORAGE_CACHE_SIZE
            ultraFastCache:
              cacheSize: ULTRAFAST_CACHE_SIZE
              localVolume:
                path: DISK_CACHE_DIR_PATH
    

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

    • DB_CLUSTER_NAME: データベース クラスタの名前。
    • STORAGE_CACHE_SIZE: カラム型ストレージ キャッシュのサイズ(例: 50Gi)。このフィールドに値を指定しない場合、デフォルトではディスク キャッシュの 5% がカラム型エンジンに割り当てられます。
    • ULTRAFAST_CACHE_SIZE: AlloyDB Omni によって予約される超高速キャッシュ バッファの最大サイズ(100Gi など)。設定しない場合、localVolume.path の残りのディスク容量がすべて使用されます。
    • DISK_CACHE_DIR_PATH: 超高速キャッシュ ファイルのフォルダパス(例: /mnt/disks/chillcache)。
  3. alloydbctl または Ansible を使用して、更新された DBCluster マニフェストを適用します。

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

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

    • DEPLOYMENT_SPEC_PATH: デプロイ仕様ディレクトリのパス。
    • DBCLUSTER_SPECIFICATION: 変更した DBCluster マニフェストのパス。

    Ansible

    1. update.yml プレイブック ファイルを作成します。

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

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

      • SSH_USER: SSH を使用してクラスタ内のノードに接続するために使用するユーザー名。
      • SSH_KEY_PATH: ノードへの接続に使用される SSH 秘密鍵ファイルのローカルパス。
    2. コントロール ノードからプレイブックを実行し、リソース仕様を追加の変数として渡します。

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

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

      • DEPLOYMENT_SPEC_PATH: デプロイ仕様ディレクトリのパス。
      • DBCLUSTER_SPECIFICATION: 変更した DBCluster マニフェストのパス。

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

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

ベクトル化結合を有効にすると、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 に設定する手順は次のとおりです。

  1. DBCluster データベース クラスタ マニフェストを開きます。

  2. primarySpec セクションで、parameters ブロックの google_columnar_engine.enabled パラメータを off に設定します。

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "off"
    

    DB_CLUSTER_NAME は、データベース クラスタの名前に置き換えます。

  3. RPM オーケストレーターは、パラメータの変更を適用するためにデータベースを自動的に再起動します。次のいずれかの方法で、更新された DBCluster マニフェストを適用します。

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

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

    • DEPLOYMENT_SPEC_PATH: デプロイ仕様ディレクトリのパス。
    • DBCLUSTER_SPECIFICATION: 変更した DBCluster マニフェストのパス。

    Ansible

    1. update.yml プレイブック ファイルを作成します。

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

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

      • SSH_USER: SSH を使用してクラスタ内のノードに接続するために使用するユーザー名。
      • SSH_KEY_PATH: ノードへの接続に使用される SSH 秘密鍵ファイルのローカルパス。
    2. コントロール ノードからプレイブックを実行し、リソース仕様を追加の変数として渡します。

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

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

      • DEPLOYMENT_SPEC_PATH: デプロイ仕様ディレクトリのパス。
      • DBCLUSTER_SPECIFICATION: 変更した DBCluster マニフェストのパス。

次のステップ