O motor colunar do AlloyDB Omni acelera o processamento de consultas SQL de análises, junções e agregações, fornecendo os seguintes componentes:
Um armazenamento de colunas que contém dados de tabelas e vistas materializadas para colunas selecionadas, reorganizados num formato orientado para colunas.
Um planeador de consultas colunar e um motor de execução que suportam a utilização do armazenamento de colunas em consultas.
Pode usar o motor de colunas na instância principal, numa instância de conjunto de leitura ou em ambas. Também pode usar a auto-colunação para analisar a sua carga de trabalho e preencher automaticamente o armazenamento de colunas com as colunas que oferecem o melhor aumento de desempenho.
Para usar o motor de colunas com uma consulta específica, todas as colunas referenciadas na consulta, como junções e verificações, têm de estar no armazenamento de colunas.
Por predefinição, o motor de colunas está definido para usar 1 GB da memória da sua instância. Consoante a sua carga de trabalho, a utilização de memória e se tiver um conjunto de leitura configurado, pode optar por reduzir a atribuição de memória do motor de colunas na sua instância principal e atribuir mais memória à instância do conjunto de leitura.
Para ver e monitorizar a utilização de memória pelo motor de armazenamento em colunas, consulte o artigo Veja a utilização de memória do armazenamento em colunas. Para modificar o tamanho da memória usado pelo armazenamento de colunas, consulte o artigo Configure o tamanho do armazenamento de colunas. Para encontrar o tamanho da memória do motor colunar recomendado para a sua instância, consulte o artigo Recomendação do tamanho da memória da base de dados de colunas.
Tipos de consultas que beneficiam do motor de colunas
Determinadas consultas podem beneficiar do motor de colunas. Segue-se uma lista de operações e respetivos padrões de consulta que beneficiam mais do motor de colunas:
Operação | Padrões de consulta |
---|---|
Procura de tabelas | Filtros seletivos, como cláusulas WHERE .Um pequeno número de colunas de uma tabela maior ou de uma vista materializada. Expressões como LIKE , SUBSTR ou TRIM . |
Funções de agregação | Apenas expressões como SUM , MIN , MAX , AVG e COUNT .No início da consulta de uma análise de colunas. Não agrupados ou agrupados por colunas. |
ORDER-BY |
Apenas se o operador estiver no início da consulta de uma análise de colunas. |
SORT |
Apenas se o operador estiver no início da consulta de uma análise de colunas e ordenar apenas pelas colunas base da tabela ou da vista materializada. |
LIMIT |
Apenas se o operador estiver no início da consulta
de uma análise de colunas e estiver antes de quaisquer operadores SORT ou GROUP BY . |
INNER HASH JOIN |
Apenas se as chaves usadas forem colunas e não forem usados qualificadores de junção. |
Associações seletivas | Apenas se as junções estiverem no início da consulta de uma análise de colunas. |
Para mais informações sobre as consultas que funcionam melhor com o motor de colunas, se o motor de colunas foi usado por uma consulta e como foi usado, consulte o artigo Verifique a utilização do motor de colunas através do EXPLAIN
.
Como usar o motor de colunas numa instância do AlloyDB Omni
Para usar o motor de colunas numa instância do AlloyDB Omni, execute estes passos de alto nível:
Ative o motor na instância.
A ativação do motor é uma operação única e requer o reinício da base de dados.
Adicione colunas ao arquivo de colunas.
Para adicionar colunas ao arquivo de colunas, use um dos seguintes métodos:
Use a organização automática em colunas, que analisa a sua carga de trabalho e adiciona colunas automaticamente.
Adicione as colunas manualmente com base no seu conhecimento da carga de trabalho nas bases de dados na instância.
Pode acompanhar o conteúdo do armazenamento de colunas através da vista e, depois de adicionar colunas, pode usar a declaração
EXPLAIN
para verificar a utilização do motor de colunas em consultas SQL.g_columnar_relations
Para obter instruções detalhadas sobre como usar o motor de colunas, consulte o artigo Configure o motor de colunas.
Que dados pode adicionar ao arquivo de colunas
Existem algumas limitações quanto aos tipos de dados e às origens de dados que pode usar quando adiciona colunas ao arquivo de colunas.
Tipos de dados suportados
O motor de colunas suporta apenas colunas com os seguintes tipos de dados incorporados:
array
bigint
boolean
bytea
char
date
decimal
double precision
enum
float4
float8
integer
json
jsonb
numeric
real
serial
short
smallint
text
timestamp
uuid
varchar
O motor de colunas ignora todas as tentativas de adicionar manualmente colunas com tipos de dados não suportados à base de dados de colunas.
Origens de dados não suportadas
O motor de colunas não suporta tabelas nem visualizações de propriedades materializadas com os seguintes atributos como origens de dados:
Tabelas particionadas não finais
Tabelas estrangeiras
Tabelas ou vistas com menos de 5000 linhas
Limitações do motor colunar
- Se estiver a executar uma consulta analítica numa coluna que tenha um índice, o otimizador do AlloyDB Omni pode optar por usar o armazenamento de linhas.
- As colunas adicionadas manualmente ao arquivo de colunas não são removidas automaticamente. Para forçar a remoção de colunas adicionadas manualmente, use
google_columnar_engine_drop
na sua instância. - A organização automática em colunas pode adicionar e remover colunas dinamicamente com base na utilização das consultas.
- Nem todos os tipos de dados são suportados pelo motor de colunas. Para ver os tipos de dados suportados, consulte o artigo Tipos de dados suportados.
As atualizações frequentes das linhas invalidam os dados em colunas. Para validar uma tabela ou uma vista materializada no armazenamento de colunas, pode reduzir a frequência de atualização ou agendar atualizações do motor de colunas com maior frequência.
Pode comparar as colunas
invalid_block_count
etotal_block_count
emg_columnar_relations
para verificar se a sua tabela ou vista é afetada. Se tiver alterações frequentes ou de grande volume à sua tabela ou vista, oinvalid_block_count
é elevado.