Sobre o mecanismo de colunas do AlloyDB

Nesta página, você encontra uma visão geral do mecanismo colunar oferecido pelo AlloyDB para PostgreSQL e aprende a usá-lo.

O mecanismo colunar do AlloyDB acelera o processamento de consulta SQL de verificações, junções e agregações fornecendo estes componentes:

  • Um armazenamento de colunas que contém dados de tabela e de visualização materializada para colunas selecionadas, reorganizados em um formato orientado a colunas.

  • Um planejador de consultas colunares e um mecanismo de execução para oferecer suporte ao uso do armazenamento de colunas em consultas.

O mecanismo colunar pode ser usado na instância principal, em uma instância do pool de leitura ou em ambas. Também é possível usar a colunação automática para analisar sua carga de trabalho e preencher automaticamente o repositório de colunas com as colunas que oferecem o melhor ganho de performance.

Para usar o mecanismo colunar com uma consulta específica, todas as colunas nos fragmentos dessa consulta, como junções e verificações, precisam estar no repositório de colunas.

Por padrão, o mecanismo colunar é definido para usar 30% da memória da instância. Dependendo da sua carga de trabalho, do uso de memória e se você tiver um pool de leitura configurado, é possível reduzir a alocação de memória do mecanismo colunar na instância principal e alocar mais memória para a instância do pool de leitura. Para ver e monitorar o uso da memória pelo mecanismo colunar, consulte Ver o uso da memória do repositório de colunas. Para modificar o tamanho da memória usada pelo repositório de colunas, consulte Configurar o tamanho do repositório de colunas. Para encontrar o tamanho de memória recomendado para o mecanismo colunar da sua instância, consulte Recomendar tamanho da memória do columnstore.

Tipos de consultas que se beneficiam do mecanismo colunar

Algumas consultas podem se beneficiar do mecanismo colunar. Confira a seguir uma lista de operações e padrões de consulta que mais se beneficiam do mecanismo colunar:

  • Verificações de tabela

    • Ele tem filtros seletivos, como cláusulas WHERE.
    • Ela usa um pequeno número de colunas de uma tabela ou visualização materializada maior.
    • Ele usa expressões como LIKE, SUBSTR ou "TRIM".
  • Funções de agregação

    • Elas usam apenas as seguintes expressões: SUM, MIN, MAX, AVG e COUNT.
    • Eles estão no início da consulta de uma verificação colunar.
    • Elas não estão agrupadas ou são colunas de agrupamento.
  • ORDER-BY e SORT: somente quando ORDER-BY ou SORT está nos resultados da verificação das colunas acessadas pelo mecanismo colunar.

  • LIMIT: somente se o operador estiver no início da consulta de uma verificação colunar e antes de qualquer operador SORT ou GROUP BY.

  • INNER HASH JOIN somente se as chaves usadas forem colunas e nenhum qualificador de junção for usado.

  • Junções seletivas somente se estiverem no início da consulta de uma varredura colunar.

Para mais informações sobre quais consultas funcionam melhor com o mecanismo de colunas, se ele foi usado por uma consulta e como foi usado, consulte Verificar o uso do mecanismo de colunas usando EXPLAIN.

Como usar o mecanismo de colunas

Para usar o mecanismo colunar em uma instância do AlloyDB, siga estas etapas de alto nível:

  1. Ative o mecanismo na instância.

    A ativação do mecanismo é uma operação única e exige uma reinicialização.

  2. Adicione colunas ao repositório de colunas.

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

  3. É possível acompanhar o que está no repositório de colunas usando a visualização g_columnar_relations e, depois que as colunas forem adicionadas, use a instrução EXPLAIN para verificar o uso do mecanismo colunar em consultas SQL.

Para instruções detalhadas sobre como usar o mecanismo de colunas, consulte Configurar o mecanismo de colunas.

Quais dados podem ser adicionados ao repositório de colunas

Há algumas limitações nos tipos e fontes de dados que você pode usar ao adicionar colunas ao repositório de colunas.

Tipos de dados compatíveis

O mecanismo colunar aceita apenas colunas com os seguintes tipos de dados integrados:

  • 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

O mecanismo colunar ignora qualquer tentativa de adicionar manualmente colunas com tipos de dados não compatíveis ao repositório de colunas.

Fontes de dados sem suporte

O mecanismo colunar não é compatível com tabelas ou visualizações materializadas com os seguintes atributos como fontes de dados:

  • Tabelas particionadas não folha

  • Tabelas externas

  • Tabelas ou visualizações com menos de 5.000 linhas

Limitações do mecanismo colunar

  • Se você estiver executando uma consulta analítica em uma coluna que tem um índice, o otimizador do AlloyDB poderá usar o row-store.
  • As colunas adicionadas manualmente ao repositório 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 columnarização automática pode adicionar e remover colunas dinamicamente com base no uso da consulta.
  • Nem todos os tipos de dados são compatíveis com o mecanismo colunar. Para conferir os tipos de dados compatíveis, consulte Tipos de dados compatíveis.
  • Atualizações frequentes de linhas invalidam os dados colunares. Para validar uma tabela ou uma visualização materializada no armazenamento colunar, reduza a frequência de atualização ou programe atualizações mais frequentes do mecanismo colunar.

    Compare as colunas invalid_block_count e total_block_count em g_columnar_relations para verificar se a tabela ou visualização foi afetada. Se você fizer mudanças frequentes ou em grande volume na tabela ou visualização, o invalid_block_count será alto.

  • Uma tabela particionada não pode ser preenchida diretamente no mecanismo colunar. Para usar o mecanismo colunar, é necessário preencher individualmente cada uma das partições de folha da tabela.

A seguir