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.

As etapas usadas para definir essa flag em uma instância dependem de você executar o AlloyDB Omni em um contêiner ou em um cluster do Kubernetes.

Servidor único

Para definir google_columnar_engine.enabled como on, siga estas etapas:

  1. Execute o comando ALTER SYSTEM do PostgreSQL:

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. Se quiser ajustar a configuração do mecanismo colunar, siga as instruções na próxima seção antes de reiniciar o servidor de banco de dados. Caso contrário, conclua a etapa a seguir para reiniciar o servidor de banco de dados agora.

  3. Para que a alteração nos parâmetros de configuração entre em vigor, reinicie o contêiner em execução com o AlloyDB Omni.

    Docker

      sudo docker restart CONTAINER_NAME

    Podman

      sudo podman restart CONTAINER_NAME

Kubernetes

Para definir a flag google_columnar_engine.enabled como on, modifique o manifesto do cluster de banco de dados para adicionar o atributo parameters à seção primarySpec:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "15.7.1"
      primarySpec:
        parameters:
          google_columnar_engine.enabled: "on"

Substitua CLUSTER_NAME pelo nome do cluster de banco de dados. É o mesmo nome de cluster de banco de dados que você declarou ao criá-lo.

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 garante que o AlloyDB Omni possa 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.

As etapas usadas para definir essa flag em uma instância dependem de você executar o AlloyDB Omni em um contêiner ou em um cluster do Kubernetes.

Servidor único

Para definir a flag google_columnar_engine.memory_size_in_mb em uma instância, faça o seguinte:

  1. Configure a memória executando o comando ALTER SYSTEM do PostgreSQL:

    ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
    

    Substitua COLUMN_MEMORY_SIZE pelo novo tamanho do armazenamento da coluna, em megabytes. Por exemplo, 256.

  2. Para que a alteração nos parâmetros de configuração entre em vigor, reinicie o contêiner em execução com o AlloyDB Omni.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Kubernetes

Para definir a flag google_columnar_engine.memory_size_in_mb, modifique o manifesto do cluster de banco de dados para adicionar o atributo parameters à seção primarySpec:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "15.7.1"
      primarySpec:
        parameters:
          google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"

Substitua o seguinte:

  • CLUSTER_NAME: o nome do cluster de banco de dados. É o mesmo nome de cluster de banco de dados que você declarou ao criá-lo.
  • COLUMN_MEMORY_SIZE: o novo tamanho do armazenamento de colunas, em megabytes. Por exemplo, 256.

Configurar o cache de armazenamento

Antes de configurar o cache de armazenamento, ative o cache em disco do AlloyDB Omni.

As etapas usadas para definir essa flag em uma instância dependem de você executar o AlloyDB Omni em um contêiner ou em um cluster do Kubernetes.

Servidor único

  1. Configure o cache de armazenamento da seguinte maneira:

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    Substitua STORAGE_CACHE_SIZE pelo tamanho do cache de armazenamento desejado, em megabytes. Por padrão, 5% do cache em disco são alocados para o mecanismo colunar. O valor máximo permitido para essa flag é 50% do cache em disco total ou 1.000 * google_columnar_engine.memory_size_in_mb, o que for menor.

  2. Para que a alteração nos parâmetros de configuração entre em vigor, reinicie o contêiner em execução com o AlloyDB Omni.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Kubernetes

Para ativar o cache de armazenamento do seu banco de dados, modifique o manifesto do cluster de banco de dados para adicionar o atributo columnarSpillToDisk à seção features da seção primarySpec:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "15.7.1"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: STORAGE_CACHE_SIZE
      ultraFastCache:
        cacheSize: ULTRAFAST_CACHE_SIZE
        genericVolume:
          storageClass: "STORAGE_CLASS_NAME"
...

Substitua o seguinte:

  • CLUSTER_NAME: o nome do cluster de banco de dados. É o mesmo nome de cluster de banco de dados que você declarou ao criá-lo.
  • STORAGE_CACHE_SIZE: o tamanho do cache de armazenamento colunar, por exemplo, 5Gi. Se você não especificar um valor para esse campo, 5% do cache em disco serão alocados para o mecanismo colunar por padrão.
  • ULTRAFAST_CACHE_SIZE: o tamanho do cache, por exemplo, 100Gi. Precisa ser um valor maior do que shared_buffers. Esse campo é opcional. Se você não especificar o valor desse campo, o AlloyDB Omni vai usar todo o espaço restante no disco, o que se aplica ao AlloyDB Omni em um contêiner e em um cluster do Kubernetes. Para mais informações sobre unidades de medida, consulte Unidades de recurso de memória.
  • STORAGE_CLASS_NAME: o nome da classe de armazenamento do volume de cache ultrarrápido. Por exemplo, local-storage.

Ativar a mesclagem vetorizada

O mecanismo colunar tem um recurso de mesclagem vetorizada que pode melhorar o desempenho das mesclagens aplicando o processamento vetorizado a consultas qualificadas.

Depois que você ativa a mesclagem vetorizada, o planejador de consultas do AlloyDB tem a opção de aplicar o operador de mesclagem vetorizada em vez do operador de mesclagem 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 mesclagem vetorizada em uma instância, defina a flag google_columnar_engine.enable_vectorized_join da instância como on.

Para definir essa flag em uma instância, execute o comando ALTER SYSTEM do PostgreSQL:

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

O AlloyDB Omni aloca uma linha de execução para o recurso de mesclagem 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.

As etapas usadas para definir essa flag em uma instância dependem de você executar o AlloyDB Omni em um contêiner ou em um cluster do Kubernetes.

Servidor único

Para definir google_columnar_engine.enabled como off, siga estas etapas:

  1. Execute o comando ALTER SYSTEM do PostgreSQL:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
  1. Para que a alteração nos parâmetros de configuração entre em vigor, reinicie o contêiner em execução com o AlloyDB Omni.

Docker

Para reiniciar um contêiner do AlloyDB Omni, execute o comando docker container restart:

  sudo docker restart CONTAINER_NAME

Substitua CONTAINER_NAME pelo nome que você atribuiu ao contêiner do AlloyDB Omni ao instalá-lo.

Podman

Para reiniciar um contêiner do AlloyDB Omni, execute o comando podman container start:

  sudo podman restart CONTAINER_NAME

Substitua CONTAINER_NAME pelo nome que você atribuiu ao contêiner do AlloyDB Omni ao instalá-lo.

Kubernetes

Para definir a flag google_columnar_engine.enabled como off, modifique o manifesto do cluster de banco de dados para adicionar o atributo parameters à seção primarySpec:

  apiVersion: alloydbomni.dbadmin.goog/v1
  kind: DBCluster
  metadata:
    name: CLUSTER_NAME
  spec:
    databaseVersion: "15.7.1"
    primarySpec:
      parameters:
        google_columnar_engine.enabled: "off"

Substitua CLUSTER_NAME pelo nome do cluster de banco de dados. É o mesmo nome de cluster de banco de dados que você declarou ao criá-lo.

Resolver problemas do mecanismo colunar

Corrigir o erro insufficient shared memory

Se você executar o AlloyDB Omni sem memória compartilhada suficiente para o uso do mecanismo colunar, poderá ver este erro:

Insufficient shared memory for generating the columnar formats.

Para resolver esse problema, especifique a quantidade de memória compartilhada disponível para o contêiner do AlloyDB Omni. A maneira de fazer isso varia de acordo com o sistema operacional do host.

Linux

Aumente o tamanho da partição /dev/shm da máquina host usando uma técnica como editar o arquivo /etc/fstab.

macOS

Instale um novo contêiner do AlloyDB Omni, especificando um valor maior de memória compartilhada para a flag --shm-size.

Corrigir colunas que não estão sendo preenchidas

Se as colunas não forem preenchidas no mecanismo colunar, uma das seguintes situações pode ser verdadeira:

  • As colunas que você quer adicionar incluem um tipo de dados não compatível.

  • Os requisitos do mecanismo colunar não estão sendo atendidos.

Para resolver esse problema, tente o seguinte:

  • Confirme se as tabelas ou visualizações materializadas na consulta estão no mecanismo colunar.
  • Verifique o uso do mecanismo de colunas usando a instrução EXPLAIN.

A seguir