Vista geral do motor colunar

Selecione uma versão da documentação:

Esta página descreve o motor de colunas do AlloyDB Omni e fornece instruções sobre como usar o motor em instalações de contentores e clusters do Kubernetes. Esta página pressupõe que tem conhecimentos do PostgreSQL.

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:

  1. Ative o motor na instância.

    A ativação do motor é uma operação única e requer o reinício da base de dados.

  2. Adicione colunas ao arquivo de colunas.

    Para adicionar colunas ao arquivo de colunas, use um dos seguintes métodos:

  3. Pode acompanhar o conteúdo do armazenamento de colunas através da vista e, depois de adicionar colunas, pode usar a declaraçãoEXPLAIN 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 e total_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, o invalid_block_count é elevado.

O que se segue?