Esta página descreve como ativar ou desativar o mecanismo de colunas em um cluster de banco de dados do AlloyDB Omni. Também aborda como configurar um tamanho inicial adequado para o armazenamento 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 de colunas 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 se você executa 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:
Execute o comando
ALTER SYSTEM
do PostgreSQL:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
Se você quiser ajustar a configuração do mecanismo de colunas, 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 mudança 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 do 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.0"
primarySpec:
parameters:
google_columnar_engine.enabled: "on"
Substitua CLUSTER_NAME
pelo nome do cluster do banco de dados. É o mesmo nome do cluster de banco de dados que você declarou ao criar.
Configurar o tamanho do armazenamento de colunas
Enquanto o mecanismo de colunas está ativado em uma instância, o AlloyDB Omni aloca uma parte da memória da instância para armazenar os dados de colunas. A atribuição de RAM de alta velocidade ao armazenamento de colunas garante que o AlloyDB Omni possa acessar os dados de colunas o mais rápido possível.
A memória e o cache de armazenamento juntos representam 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 configurar a memória do armazenamento de colunas do AlloyDB Omni dependem se você executa 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:
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 de colunas em megabytes, por exemplo,256
.Para que a mudança 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 do 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.0"
primarySpec:
parameters:
google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"
Substitua:
CLUSTER_NAME
: o nome do cluster do banco de dados. É o mesmo nome do cluster de banco de dados que você declarou ao criar.COLUMN_MEMORY_SIZE
: o novo tamanho do armazenamento de colunas, em megabytes. Por exemplo,256
.
Configurar o cache de armazenamento
Antes de configurar o armazenamento em cache, ative o cache de disco do AlloyDB Omni.
As etapas usadas para ativar o armazenamento em cache do AlloyDB Omni dependem se você executa o AlloyDB Omni em um contêiner ou em um cluster do Kubernetes.
Servidor único
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 que você quer, em megabytes. Por padrão, 5% do cache em disco é alocado para o mecanismo de colunas. O valor máximo permitido para essa flag é de 50% do cache total do disco ou 1.000 * google_columnar_engine.memory_size_in_mb, o que for menor.Para que a mudança 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 armazenamento em cache do banco de dados, modifique o manifesto do cluster do 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.0"
primarySpec:
features:
columnarSpillToDisk:
cacheSize: STORAGE_CACHE_SIZE
ultraFastCache:
cacheSize: ULTRAFAST_CACHE_SIZE
genericVolume:
storageClass: "STORAGE_CLASS_NAME"
...
Substitua:
CLUSTER_NAME
: o nome do cluster do banco de dados. É o mesmo nome do cluster de banco de dados que você declarou ao criar.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 do disco serão alocados para o mecanismo de colunas por padrão.ULTRAFAST_CACHE_SIZE
: o tamanho do cache, por exemplo,100Gi
. Deve ser maior do queshared_buffers
. Este campo é opcional. Se você não especificar o valor desse campo, o AlloyDB Omni vai usar todo o espaço disponível 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 união vetorial
O mecanismo colunar tem um recurso de junção vetorial que pode melhorar o desempenho das junções aplicando o processamento vetorial a consultas qualificadas.
Depois de ativar a mesclagem vetorizada, o planejador de consulta do AlloyDB tem a opção de aplicar o operador de mesclagem vetorizado em vez de o operador 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 combinação vetorial 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
vetorizado por padrão. É possível aumentar o número de linhas de execução disponíveis para
esse recurso definindo a flag
google_columnar_engine.vectorized_join_threads
para um valor maior. O valor máximo é cpu_count * 2
.
Atualizar manualmente o mecanismo colunar
Por padrão, quando o mecanismo colunar é ativado, ele atualiza o armazenamento de colunas em segundo plano.
Para atualizar manualmente o mecanismo de colunas, 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 motor de coluna 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 se você executa o AlloyDB Omni em um contêiner em um único servidor ou em um cluster do Kubernetes.
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 mudança 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 atribuído
ao contêiner AlloyDB Omni quando ele foi instalado.
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 atribuído
ao contêiner AlloyDB Omni quando ele foi instalado.
Kubernetes
Para definir a flag google_columnar_engine.enabled
como off
, modifique o manifesto do cluster do 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.0"
primarySpec:
parameters:
google_columnar_engine.enabled: "off"
Substitua CLUSTER_NAME
pelo nome do cluster do banco de dados. É o mesmo nome do cluster de banco de dados que você declarou ao criar.
Resolver problemas no mecanismo colunar
Corrigir o erro insufficient shared memory
Se você executar o AlloyDB Omni sem memória compartilhada suficiente para que o mecanismo colunar seja usado, poderá aparecer 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 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 de memória compartilhada maior para a flag --shm-size
.
Corrigir colunas que não estão sendo preenchidas
Se as colunas não forem preenchidas no mecanismo de colunas, 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 de colunas.
- Verifique o uso do mecanismo de colunas usando a instrução
EXPLAIN
.
A seguir
Consulte a lista completa de flags do banco de dados do mecanismo de colunas.
Siga o tutorial do Google CodeLab Como acelerar consultas analíticas com o mecanismo colunar no AlloyDB Omni.