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 SYSTEM
do 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_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:
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
.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 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_VOLUME
pelo nome de um volume lógico tratado como uma partição pelo LVM. Por exemplo,omni_disk_cache_device
. - Crie o sistema de arquivos
ext4
no volume lógico. Se necessário, especifique outras opções deext4
sujeitas à 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_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 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_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.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.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:
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.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:
- Execute o comando
ALTER SYSTEM
do 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_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
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.