Esta página oferece uma vista geral do motor de colunas que o AlloyDB for PostgreSQL oferece e mostra como usá-lo.
O motor de colunas do AlloyDB 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 para suportar a utilização do armazenamento de colunas em consultas.
O motor de colunas pode ser usado 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 colunar com uma consulta específica, todas as colunas nos fragmentos dessa consulta, como associações e análises, têm de estar no arquivo de colunas.
Por predefinição, o motor de colunas está definido para usar 30% 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:
Análises de tabelas
- Tem filtros seletivos, como cláusulas
WHERE
. - Usa um pequeno número de colunas de uma tabela ou uma vista materializada maior.
- Usa expressões como
LIKE
,SUBSTR
ou `TRIM.
- Tem filtros seletivos, como cláusulas
Funções de agregação
- Usam apenas as seguintes expressões:
SUM
,MIN
,MAX
,AVG
eCOUNT
. - Estão no início da consulta de uma análise de colunas.
- Não estão desagrupados ou estão agrupados por colunas.
- Usam apenas as seguintes expressões:
ORDER-BY
eSORT
: apenas quandoORDER-BY
ouSORT
está nos resultados da análise das colunas acedidas a partir do motor de colunas.LIMIT
: apenas se o operador estiver no início da consulta de uma análise de colunas e estiver antes de quaisquer operadoresSORT
ouGROUP BY
.INNER HASH JOIN
apenas se as chaves usadas forem colunas e não forem usados qualificadores de junção.Junçõ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
Para usar o motor de colunas numa instância do AlloyDB, execute estes passos de alto nível:
Ative o motor na instância.
A ativação do motor é uma operação única e requer um reinício.
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
timestamptz
uuid
varchar
vector
(Pré-visualizar)
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 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 mais frequentes do motor de colunas.
Pode comparar as colunas
invalid_block_count
etotal_block_count
em g_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.