Para uma vista geral conceptual do motor de colunas do AlloyDB, consulte o artigo Vista geral do motor de colunas do AlloyDB Omni.
Ative o motor de colunas
Para usar o motor de colunas numa instância, defina a flag google_columnar_engine.enabled da instância como on.
Kubernetes
Para definir a flag google_columnar_engine.enabled como on, modifique o manifesto do cluster da base de dados para adicionar o atributo parameters à secção primarySpec:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "17.5.0"
primarySpec:
parameters:
google_columnar_engine.enabled: "on"
Substitua CLUSTER_NAME pelo nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que declarou quando o criou.
Configure o tamanho do armazenamento de colunas
Embora o motor de colunas esteja ativado numa instância, o AlloyDB Omni atribui uma parte da memória da instância para armazenar os respetivos dados de colunas. A dedicação de RAM de alta velocidade ao seu armazenamento de colunas verifica que o AlloyDB Omni pode aceder aos dados em formato de colunas o mais rapidamente possível.
A memória e a cache de armazenamento representam em conjunto a capacidade geral do motor de colunas.
Configure a memória
Pode definir a atribuição para um tamanho fixo através da flag google_columnar_engine.memory_size_in_mb.
Kubernetes
Para definir a flag google_columnar_engine.memory_size_in_mb, modifique o manifesto do cluster da base de dados para adicionar o atributo parameters à secção primarySpec:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "17.5.0"
primarySpec:
parameters:
google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"
Substitua o seguinte:
CLUSTER_NAME: o nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que declarou quando o criou.COLUMN_MEMORY_SIZE: o novo tamanho do armazenamento de colunas, em megabytes, por exemplo,256.
Configure a cache de armazenamento
Pode configurar a cache de armazenamento do motor colunar em dispositivos partilhados ou dedicados.
Kubernetes
Dispositivos partilhados
Para ativar a cache de armazenamento da sua base de dados em dispositivos partilhados, modifique o manifesto do cluster da base de dados para adicionar o atributo columnarSpillToDisk à secção features da secção primarySpec:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "17.5.0"
primarySpec:
features:
columnarSpillToDisk:
cacheSize: STORAGE_CACHE_SIZE
ultraFastCache:
cacheSize: ULTRAFAST_CACHE_SIZE
genericVolume:
storageClass: "STORAGE_CLASS_NAME"
...
Substitua o seguinte:
CLUSTER_NAME: o nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que declarou quando o criou.STORAGE_CACHE_SIZE: o tamanho da cache de armazenamento em colunas, por exemplo,5Gi. Se não especificar um valor para este campo, 5% da cache de disco é atribuída ao motor de colunas por predefinição.ULTRAFAST_CACHE_SIZE: o tamanho da cache, por exemplo,100Gi. Tem de ser superior ashared_buffers. Este campo é opcional. Se não especificar o valor deste campo, o AlloyDB Omni usa todo o espaço restante no disco, o que se aplica ao AlloyDB Omni num contentor e num cluster do Kubernetes. Para mais informações sobre as unidades de medida, consulte o artigo Unidades de recursos de memória.STORAGE_CLASS_NAME: o nome da classe de armazenamento do volume da cache ultrarrápida, por exemplo,local-storage.
Dispositivos dedicados
Por predefinição, a cache de armazenamento do motor colunar partilha os mesmos dispositivos que a cache de disco do AlloyDB Omni. No entanto, pode configurar o motor de colunas para usar os seus próprios dispositivos dedicados para a cache de armazenamento devido ao seguinte:
- Não precisa de uma cache de disco porque o seu armazenamento principal já está em SSDs de elevado desempenho. Neste cenário, pode criar uma cache de armazenamento do motor colunar sem ter de atribuir espaço para uma cache de disco.
- Quiser usar meios de armazenamento diferentes para a cache de disco e a cache do motor de colunas. Por exemplo, pode querer usar um SSD padrão para a cache de disco e um SSD NVMe de maior desempenho para a cache do motor de colunas.
Use um volume genérico
Para configurar um dispositivo dedicado para a cache de armazenamento do motor colunar, modifique o seu manifesto DBCluster para adicionar o atributo columnarSpillToDisk à secção features. Em columnarSpillToDisk, pode especificar um genericVolume com um storageClass que aponta para o armazenamento que quer usar para a cache do motor colunar dedicado.
Segue-se um exemplo de como configurar um dispositivo dedicado de 50 Gi para a cache de armazenamento do motor de colunas através de uma classe de armazenamento denominada local-ssd:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "17.5.0"
primarySpec:
features:
columnarSpillToDisk:
cacheSize: STORAGE_CACHE_SIZE
genericVolume:
storageClass: "STORAGE_CLASS_NAME"
Substitua o seguinte:
CLUSTER_NAME: o nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que declarou quando o criou.STORAGE_CACHE_SIZE: o tamanho da cache de armazenamento em colunas, por exemplo,50Gi. Se não especificar um valor para este campo, 5% da cache de disco é atribuída ao motor de colunas por predefinição.STORAGE_CLASS_NAME: o nome da classe de armazenamento para o volume de cache do motor colunar dedicado, por exemplo,local-ssd.
Use um volume efémero
Pode configurar o motor de colunas para usar um volume emptyDirefémero para a respetiva cache de armazenamento. É criado um volume emptyDir quando um agrupamento é atribuído a um nó e existe enquanto esse agrupamento for executado nesse nó. Quando um Pod é removido de um nó, os dados no emptyDir são eliminados permanentemente.
Para configurar um volume emptyDir para a cache de armazenamento em colunas, modifique o manifesto DBCluster para adicionar o atributo emptyDir à secção columnarSpillToDisk.
Segue-se um exemplo de como configurar um volume efémero para a cache de armazenamento em colunas:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "17.5.0"
primarySpec:
features:
columnarSpillToDisk:
cacheSize: 50Gi
emptyDir: {}
Substitua o seguinte:
CLUSTER_NAME: o nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que declarou quando o criou.STORAGE_CACHE_SIZE: o tamanho da cache de armazenamento em colunas, por exemplo,50Gi.
Ative a junção vetorizada
O motor de colunas tem uma funcionalidade de junção vetorizada que pode melhorar o desempenho das junções aplicando o processamento vetorizado a consultas qualificadas.
Depois de ativar a junção vetorizada, o planeador de consultas do AlloyDB tem a opção de aplicar o operador de junção vetorizada em vez do operador de junção hash padrão do PostgreSQL. O planeador toma esta decisão comparando o custo de execução da consulta usando cada método.
Para ativar a junção vetorizada numa instância, defina a flag google_columnar_engine.enable_vectorized_join da instância como on.
Para definir esta flag numa instância, execute o comando ALTER SYSTEMPostgreSQL:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
Por predefinição, o AlloyDB Omni atribui um segmento à funcionalidade de junção vetorizada. Pode aumentar o número de threads disponíveis para esta funcionalidade definindo a flag google_columnar_engine.vectorized_join_threads para um valor superior. O valor máximo é cpu_count * 2.
Atualize manualmente o motor de colunas
Por predefinição, quando o motor de colunas está ativado, atualiza o armazenamento de colunas em segundo plano.
Para atualizar manualmente o motor da coluna, execute a seguinte consulta SQL:
SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');
Substitua TABLE_NAME pelo nome da tabela ou da vista materializada que quer atualizar manualmente.
Desative o motor colunar
Para desativar o motor de colunas numa instância, defina a flag google_columnar_engine.enabled
como off.
Kubernetes
Para definir a flag google_columnar_engine.enabled como off, modifique o manifesto do cluster da base de dados para adicionar o atributo parameters à secção primarySpec:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "17.5.0"
primarySpec:
parameters:
google_columnar_engine.enabled: "off"
Substitua CLUSTER_NAME pelo nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que declarou quando o criou.
O que se segue?
Veja a lista completa de flags da base de dados do motor colunar.
Trabalhe no tutorial do Google CodeLab Acelerar consultas analíticas com o motor de colunas no AlloyDB Omni.