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.

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

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.

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

Configurar o cache de armazenamento

Servidor único

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

Dispositivos dedicados

Em dispositivos dedicados, para ativar o cache de armazenamento do mecanismo colunar do AlloyDB Omni em um contêiner de servidor único, é necessário provisionar discos e criar um sistema de arquivos, ativar o diretório de cache no AlloyDB Omni e, por fim, ativar o cache de armazenamento colunar.

Provisionar discos e criar um sistema de arquivos

Para fornecer armazenamento para o cache de armazenamento do mecanismo colunar do AlloyDB Omni, siga as instruções do seu sistema operacional host para preparar um meio de armazenamento, como um volume nomeado do Docker ou um sistema de arquivos em discos dedicados.

Não Linux (macOS, Windows)

No macOS ou Windows, use um volume nomeado do Docker para o cache de armazenamento colunar e garantir o desempenho ideal.

  1. Crie um volume nomeado:

    docker volume create COLUMNAR_CACHE_VOLUME

    Substitua COLUMNAR_CACHE_VOLUME por um nome para o volume, por exemplo, omni-columnar-cache.

  2. Use esse volume ao executar o contêiner. Para mais informações, consulte Montar o diretório de cache de armazenamento colunar.

Linux

Para provisionar discos e criar um sistema de arquivos para o cache de armazenamento do mecanismo colunar do AlloyDB Omni, crie um sistema de arquivos em um ou vários discos e ative-o em um contêiner com o AlloyDB Omni. Além disso, é possível usar utilitários como mdadm ou lvm para agrupar a capacidade usando vários discos e qualquer sistema de arquivos. As etapas a seguir demonstram o uso de lvm e ext4 em uma instância do Ubuntu Compute Engine usando SSDs NVMe.

  1. Crie um grupo de volumes com todos os dispositivos físicos disponíveis:

          nvme_prefix="STORAGE_PREFIX"
          nvme_list=$(ls "$nvme_prefix"*)
          sudo vgcreate VOLUME_GROUP ${nvme_list}

    Substitua o seguinte:

    • STORAGE_PREFIX: o prefixo do caminho dos discos locais de destino anexados a uma máquina virtual usando a interface de memória não volátil expressa (NVMe). Por exemplo, no Google Cloud, os caminhos de dispositivos NVMe sempre começam com /dev/nvme0n.
    • VOLUME_GROUP: o nome de um grupo de volumes em que seus SSDs estão combinados. Por exemplo, omni-disk-cache-volume.
  2. Para criar um volume lógico com a capacidade livre do grupo de volumes da etapa anterior, use o seguinte comando:

            sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP

    Substitua LOGICAL_VOLUME pelo nome de um volume lógico tratado como uma partição pelo LVM. Por exemplo, omni_disk_cache_device.

  3. Crie o sistema de arquivos ext4 no volume lógico. Se necessário, especifique outras opções de ext4 sujeitas à segurança dos dados.
          sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
  4. Para criar um diretório que sirva como ponto de montagem na máquina host e monte o sistema de arquivos, use o seguinte comando:

          sudo mkdir /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
          sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY

    Substitua OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY pelo nome do diretório ou um caminho para o diretório que serve como um ponto de montagem, por exemplo, omni_columnar_storage_cache_directory.

Montar o diretório de cache de armazenamento colunar no AlloyDB Omni

Antes de ativar o cache em disco para o AlloyDB Omni em execução em um contêiner, é necessário montar o diretório de cache dentro do AlloyDB Omni.

Para ativar o diretório de cache dentro do contêiner, use a flag -v.

  • Para caminhos de host do Linux:

    -v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  • Para volumes nomeados (não Linux):

    -v COLUMNAR_CACHE_VOLUME:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER

Exemplo de comando do Docker usando um volume nomeado:

  sudo docker run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v COLUMNAR_CACHE_VOLUME:/var/lib/alloydb/columnar_cache
-d google/alloydbomni

Para informações sobre como instalar o AlloyDB Omni de uma imagem Docker e personalizá-lo, consulte Personalizar a instalação do AlloyDB Omni.

Para montar o OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY dentro do contêiner do Docker que executa o AlloyDB Omni, use o seguinte comando:

Docker

  sudo docker run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d google/alloydbomni

Substitua o seguinte:

  • CONTAINER_NAME: o nome a ser atribuído ao novo contêiner do AlloyDB Omni. Por exemplo, my-omni.
  • PASSWORD: a senha do administrador raiz do banco de dados PostgreSQL.
  • DATA_DIR: o caminho do sistema de arquivos que você quer que o AlloyDB Omni use para o diretório de dados.
  • CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: o diretório de cache dentro do contêiner do AlloyDB Omni que é mapeado para o ponto de montagem na máquina host. Por exemplo, com base no valor do diretório de cache dentro do contêiner, /omni_disk_cache_directory, semelhante a OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY, ou /disk/cache/inside/container.

Podman

  podman run --name CONTAINER_NAME 
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d docker.io/google/alloydbomni

Substitua o seguinte:

  • CONTAINER_NAME: o nome a ser atribuído ao novo contêiner do AlloyDB Omni. Por exemplo, my-omni.
  • PASSWORD: a senha do administrador raiz do banco de dados PostgreSQL.
  • CACHE_DIRECTORY_PATH_INSIDE_CONTAINER: o diretório de cache dentro do contêiner do AlloyDB Omni que é mapeado para o ponto de montagem na máquina host. Por exemplo, com base no valor do diretório de cache dentro do contêiner, /omni_columnar_storage_cache_directory, semelhante a OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY, ou /disk/cache/inside/container.

Para conceder permissões de acesso total ao OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY montado, use os seguintes comandos:

Docker

  sudo docker exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  sudo docker exec -it CONTAINER_NAME chmod -R a+rw  /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  

Podman

  sudo podman exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  sudo podman exec -it CONTAINER_NAME chmod -R a+rw  /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
  

Ativar o cache de armazenamento colunar do AlloyDB Omni para o AlloyDB Omni em execução em um contêiner

Para ativar o cache de armazenamento colunar do AlloyDB Omni em dispositivos dedicados para seu banco de dados, defina os parâmetros apropriados da Grand Unified Configuration (GUC) depois de verificar se o diretório de cache montado está acessível de dentro do contêiner do Docker.

  1. Defina o diretório de cache de armazenamento colunar:

    ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;
    

    Substitua OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY pelo caminho absoluto do diretório dedicado em que você quer que o AlloyDB Omni armazene os arquivos de cache de armazenamento do mecanismo colunar. Verifique se esse diretório existe e tem as permissões de gravação adequadas para o usuário do banco de dados.

  2. Configure o tamanho do cache de armazenamento:

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    Substitua STORAGE_CACHE_SIZE pelo tamanho desejado do cache de armazenamento colunar, em megabytes. Por padrão, todo o tamanho do dispositivo dedicado é alocado para o mecanismo colunar, sem afetar o cache em disco. O valor máximo permitido para essa flag é 1.000 * google_columnar_engine.memory_size_in_mb, o que for menor.

  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

Dispositivos compartilhados

Antes de configurar o cache de armazenamento colunar para dispositivos compartilhados com cache em disco, ative o cache em disco do AlloyDB Omni.

Configure o cache de armazenamento em dispositivos compartilhados da seguinte maneira:

  1. Configure o cache de armazenamento:

    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

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 columbar em uma instância, defina a flag google_columnar_engine.enabled como off.

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.

A seguir