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 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:
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 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.
-
Crie um volume nomeado:
docker volume create COLUMNAR_CACHE_VOLUME
Substitua
COLUMNAR_CACHE_VOLUMEpor um nome para o volume, por exemplo,omni-columnar-cache. -
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.
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 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_CONTAINERPara 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 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.
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.