Acerca do motor colunar do AlloyDB

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.
  • Funções de agregação

    • Usam apenas as seguintes expressões: SUM, MIN, MAX, AVG e COUNT.
    • Estão no início da consulta de uma análise de colunas.
    • Não estão desagrupados ou estão agrupados por colunas.
  • ORDER-BY e SORT: apenas quando ORDER-BY ou SORT 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 operadores SORT ou GROUP 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:

  1. Ative o motor na instância.

    A ativação do motor é uma operação única e requer um reinício.

  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
  • 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 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?