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:
Execute o comando
ALTER SYSTEMdo PostgreSQL:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'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.
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_NAMEPodman
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 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.
Servidor único
Para definir a flag google_columnar_engine.memory_size_in_mb em uma instância, faça o seguinte:
Configure a memória executando o comando
ALTER SYSTEMdo PostgreSQL:ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;Substitua
COLUMN_MEMORY_SIZEpelo novo tamanho do armazenamento da coluna, em megabytes. Por exemplo,256.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_NAMEPodman
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 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.
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.
-
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_VOLUMEpelo nome de um volume lógico tratado como uma partição pelo LVM. Por exemplo,omni_disk_cache_device. - Crie o sistema de arquivos
ext4no volume lógico. Se necessário, especifique outras opções deext4sujeitas à segurança dos dados.sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
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_DIRECTORYpelo 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 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 aOMNI_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 aOMNI_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.
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_DIRECTORYpelo 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.Configure o tamanho do cache de armazenamento:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;Substitua
STORAGE_CACHE_SIZEpelo 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.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_NAMEPodman
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:
Configure o cache de armazenamento:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;Substitua
STORAGE_CACHE_SIZEpelo 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.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_NAMEPodman
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:
- Execute o comando
ALTER SYSTEMdo PostgreSQL:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
- 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_NAMESubstitua 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_NAMESubstitua CONTAINER_NAME pelo nome que você atribuiu
ao contêiner do AlloyDB Omni ao instalá-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
Consulte a lista completa de flags de banco de dados do mecanismo colunar.
Siga o tutorial do Google CodeLab Como acelerar consultas analíticas com o mecanismo colunar no AlloyDB Omni.