Configurar o mecanismo colunar no AlloyDB Omni

Selecione uma versão da documentação:

Nesta página, descrevemos como ativar ou desativar o mecanismo colunar em um cluster de banco de dados do AlloyDB Omni. Também abordamos como configurar um tamanho inicial adequado para o repositório de colunas.

Para uma visão geral conceitual do mecanismo colunar do AlloyDB, consulte Visão geral do mecanismo colunar do AlloyDB Omni.

Ativar o mecanismo colunar

Para usar o mecanismo colunar em uma instância, defina a flag google_columnar_engine.enabled da instância como on.

Para definir o parâmetro google_columnar_engine.enabled como on, siga estas etapas:

  1. Abra o manifesto do cluster de banco de dados DBCluster.

  2. Na seção primarySpec, adicione o parâmetro google_columnar_engine.enabled ao bloco parameters:

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

    Substitua DB_CLUSTER_NAME pelo nome do cluster de banco de dados.

  3. O orquestrador de RPM reinicia automaticamente o banco de dados para aplicar as mudanças de parâmetro. Aplique o manifesto DBCluster atualizado usando um dos seguintes métodos:

    alloydbctl

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

    Substitua:

    • DEPLOYMENT_SPEC_PATH: o caminho para o diretório de especificação da implantação.
    • DBCLUSTER_SPECIFICATION: o caminho para o manifesto DBCluster que você modificou.

    Ansible

    1. Crie um arquivo de playbook 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
      

      Substitua:

      • SSH_USER: o nome de usuário que você usa para se conectar aos nós no cluster usando SSH.
      • SSH_KEY_PATH: o caminho local para o arquivo de chave privada SSH usado para se conectar aos nós.
    2. Execute o playbook no nó de controle, transmitindo a especificação do recurso como uma variável extra:

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

      Substitua:

      • DEPLOYMENT_SPEC_PATH: o caminho para o diretório de especificação da implantação.
      • DBCLUSTER_SPECIFICATION: o caminho para o manifesto DBCluster que você modificou.

Configurar o tamanho do repositório de colunas

Enquanto o mecanismo colunar está ativado em uma instância, o AlloyDB Omni aloca uma parte da memória da instância para armazenar os dados colunares. Dedicar RAM de alta velocidade ao repositório de colunas verifica se o AlloyDB Omni pode acessar os dados colunares o mais rápido possível.

A memória e o cache de armazenamento representam juntos a capacidade geral do mecanismo colunar.

Configurar a memória

É possível definir a alocação para um tamanho fixo usando a flag google_columnar_engine.memory_size_in_mb.

Para definir o parâmetro google_columnar_engine.memory_size_in_mb, siga estas etapas:

  1. Abra o manifesto do cluster de banco de dados DBCluster.

  2. Na seção primarySpec, adicione a configuração do mecanismo colunar ao bloco 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"
    

    Substitua:

    • DB_CLUSTER_NAME: o nome do cluster de banco de dados.
    • MEMORY_SIZE_MB: a quantidade de memória, em megabytes, a ser alocada para o mecanismo colunar.
  3. O orquestrador de RPM reinicia automaticamente o banco de dados para aplicar as mudanças de parâmetro. Aplique o manifesto DBCluster atualizado usando um dos seguintes métodos:

    alloydbctl

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

    Substitua:

    • DEPLOYMENT_SPEC_PATH: o caminho para o diretório de especificação da implantação.
    • DBCLUSTER_SPECIFICATION: o caminho para o manifesto DBCluster que você modificou.

    Ansible

    1. Crie um arquivo de playbook 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
      

      Substitua:

      • SSH_USER: o nome de usuário que você usa para se conectar aos nós no cluster usando SSH.
      • SSH_KEY_PATH: o caminho local para o arquivo de chave privada SSH usado para se conectar aos nós.
    2. Execute o playbook no nó de controle, transmitindo a especificação do recurso como uma variável extra:

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

      Substitua:

      • DEPLOYMENT_SPEC_PATH: o caminho para o diretório de especificação da implantação.
      • DBCLUSTER_SPECIFICATION: o caminho para o manifesto DBCluster que você modificou.

Configurar o cache de armazenamento

É possível configurar o cache de armazenamento do mecanismo colunar em dispositivos dedicados ou compartilhados.

Dispositivos dedicados

Para configurar um dispositivo dedicado para o cache de armazenamento do mecanismo colunar, siga estas etapas:

  1. Abra o manifesto do cluster de banco de dados DBCluster.

  2. Na seção primarySpec, adicione o atributo columnarSpillToDisk com cacheSize e localVolume.path ao bloco 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
    

    Substitua:

    • DB_CLUSTER_NAME: o nome do cluster de banco de dados.
    • STORAGE_CACHE_SIZE: o limite de tamanho do cache de armazenamento do mecanismo colunar, por exemplo, 50Gi.
    • COLUMNAR_CACHE_DIR_PATH: o caminho do sistema de arquivos do diretório dedicado ao cache de armazenamento do mecanismo colunar, por exemplo, /mnt/disks/columnarcache.
  3. Aplique o manifesto DBCluster atualizado usando alloydbctl ou Ansible:

    alloydbctl

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

    Substitua:

    • DEPLOYMENT_SPEC_PATH: o caminho para o diretório de especificação da implantação.
    • DBCLUSTER_SPECIFICATION: o caminho para o manifesto DBCluster que você modificou.

    Ansible

    1. Crie um arquivo de playbook 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
      

      Substitua:

      • SSH_USER: o nome de usuário que você usa para se conectar aos nós no cluster usando SSH.
      • SSH_KEY_PATH: o caminho local para o arquivo de chave privada SSH usado para se conectar aos nós.
    2. Execute o playbook no nó de controle, transmitindo a especificação do recurso como uma variável extra:

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

      Substitua:

      • DEPLOYMENT_SPEC_PATH: o caminho para o diretório de especificação da implantação.
      • DBCLUSTER_SPECIFICATION: o caminho para o manifesto DBCluster que você modificou.

Dispositivos compartilhados

Se você não especificar localVolume.path em columnarSpillToDisk, o cache de armazenamento do mecanismo colunar vai compartilhar o armazenamento do cache em disco configurado em ultraFastCache.

Para configurar o cache de armazenamento do mecanismo colunar em dispositivos compartilhados, siga estas etapas:

  1. Abra o manifesto do cluster de banco de dados DBCluster.

  2. Na seção primarySpec, adicione os atributos columnarSpillToDisk e ultraFastCache ao bloco features:

    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
    

    Substitua:

    • DB_CLUSTER_NAME: o nome do cluster de banco de dados.
    • STORAGE_CACHE_SIZE: o tamanho do cache de armazenamento colunar, por exemplo, 50Gi. Se você não especificar um valor para esse campo, 5% do cache em disco será alocado para o mecanismo colunar por padrão.
    • ULTRAFAST_CACHE_SIZE: o tamanho máximo do buffer de cache ultrarrápido reservado pelo AlloyDB Omni. Por exemplo, 100Gi. Se não for definido, todo o espaço em disco restante em localVolume.path será usado.
    • DISK_CACHE_DIR_PATH: o caminho da pasta para os arquivos de cache ultrarrápido. Por exemplo, /mnt/disks/chillcache.
  3. Aplique o manifesto DBCluster atualizado usando alloydbctl ou Ansible:

    alloydbctl

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

    Substitua:

    • DEPLOYMENT_SPEC_PATH: o caminho para o diretório de especificação da implantação.
    • DBCLUSTER_SPECIFICATION: o caminho para o manifesto DBCluster que você modificou.

    Ansible

    1. Crie um arquivo de playbook 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
      

      Substitua:

      • SSH_USER: o nome de usuário que você usa para se conectar aos nós no cluster usando SSH.
      • SSH_KEY_PATH: o caminho local para o arquivo de chave privada SSH usado para se conectar aos nós.
    2. Execute o playbook no nó de controle, transmitindo a especificação do recurso como uma variável extra:

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

      Substitua:

      • DEPLOYMENT_SPEC_PATH: o caminho para o diretório de especificação da implantação.
      • DBCLUSTER_SPECIFICATION: o caminho para o manifesto DBCluster que você modificou.

Ativar junção vetorizada

O mecanismo colunar tem um recurso de junção vetorizada que pode melhorar o desempenho das junções aplicando o processamento vetorizado a consultas qualificadas.

Depois que você ativa a junção vetorizada, o planejador de consultas do AlloyDB tem a opção de aplicar o operador de junção vetorizada em vez do operador de junção de hash padrão do PostgreSQL. O planejador toma essa decisão comparando o custo de execução da consulta usando cada método.

Para ativar a junção vetorizada em uma instância, defina a flag google_columnar_engine.enable_vectorized_join da instância como on.

Para definir esse parâmetro em um cluster de banco de dados, adicione google_columnar_engine.enable_vectorized_join: "on" à seção parameters do manifesto DBCluster. Para mais informações, consulte Configurar parâmetros de banco de dados do AlloyDB Omni.

O AlloyDB Omni aloca uma linha de execução para o recurso de junção vetorizada por padrão. Aumente o número de linhas de execução disponíveis para esse recurso definindo a flag google_columnar_engine.vectorized_join_threads com um valor maior. O valor máximo é cpu_count * 2.

Atualizar manualmente o mecanismo colunar

Por padrão, quando o mecanismo colunar está ativado, ele atualiza o repositório de colunas em segundo plano.

Para atualizar manualmente o mecanismo colunar, execute a seguinte consulta SQL:

SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');

Substitua TABLE_NAME pelo nome da tabela ou da visualização materializada que você quer atualizar manualmente.

Desativar o mecanismo colunar

Para desativar o mecanismo colunar em uma instância, defina a flag google_columnar_engine.enabled como off.

Para definir o parâmetro google_columnar_engine.enabled como off, siga estas etapas:

  1. Abra o manifesto do cluster de banco de dados DBCluster.

  2. Na seção primarySpec, defina o parâmetro google_columnar_engine.enabled como off no bloco parameters:

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

    Substitua DB_CLUSTER_NAME pelo nome do cluster de banco de dados.

  3. O orquestrador de RPM reinicia automaticamente o banco de dados para aplicar as mudanças de parâmetro. Aplique o manifesto DBCluster atualizado usando um dos seguintes métodos:

    alloydbctl

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

    Substitua:

    • DEPLOYMENT_SPEC_PATH: o caminho para o diretório de especificação da implantação.
    • DBCLUSTER_SPECIFICATION: o caminho para o manifesto DBCluster que você modificou.

    Ansible

    1. Crie um arquivo de playbook 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
      

      Substitua:

      • SSH_USER: o nome de usuário que você usa para se conectar aos nós no cluster usando SSH.
      • SSH_KEY_PATH: o caminho local para o arquivo de chave privada SSH usado para se conectar aos nós.
    2. Execute o playbook no nó de controle, transmitindo a especificação do recurso como uma variável extra:

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

      Substitua:

      • DEPLOYMENT_SPEC_PATH: o caminho para o diretório de especificação da implantação.
      • DBCLUSTER_SPECIFICATION: o caminho para o manifesto DBCluster que você modificou.

A seguir