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 mostra como 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 repositório de colunas que contém dados de tabela e de visualização materializada para colunas selecionadas, reorganizados em um formato orientado a colunas. Também é possível adicionar expressões usadas com frequência ao repositório de colunas.

  • Um planejador de consultas e um mecanismo de execução em colunas para oferecer suporte ao uso do repositório 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 da memória e se você tem 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 de 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, ILIKE, SUBSTR e 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 de 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 elas estiverem no início da consulta de uma varredura colunar.

  • Filtrar consultas com expressões JSON.

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

Como usar o mecanismo colunar

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 repositório de colunas, 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 colunar, consulte Configurar o mecanismo colunar.

Quais dados podem ser adicionados ao repositório de colunas

Há algumas limitações nos tipos e fontes de dados que podem ser usados ao adicionar colunas ao repositório de colunas.

Tipos de dados compatíveis

O mecanismo colunar pode preencher e atualizar colunas compatíveis em uma tabela, mesmo que algumas delas tenham tipos de dados sem suporte. As colunas com tipos de dados sem suporte são ignoradas durante o processo de inclusão.

Ao executar uma consulta, o mecanismo colunar processa uma tabela se todas as colunas específicas referenciadas nessa parte da consulta tiverem tipos de dados compatíveis e estiverem presentes no mecanismo colunar.

Em consultas que envolvem várias tabelas, como operações JOIN, é possível usar o mecanismo colunar para qualquer tabela individualmente. Desde que todas as colunas acessadas da tabela específica na consulta tenham tipos de dados compatíveis e estejam no mecanismo colunar, essa tabela poderá ser processada por ele, mesmo que outras tabelas na junção tenham colunas incompatí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 incompatíveis

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 estrangeiras

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 armazenamento de linhas.
  • 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.

  • Não é possível preencher diretamente uma tabela particionada no mecanismo colunar. Para usar o mecanismo colunar, preencha individualmente cada uma das partições de folha da tabela.

  • Para tabelas ou visualizações com um pequeno número de linhas, geralmente menos de 5.000, o planejador de consultas pode optar por usar o repositório de linhas em vez do repositório de colunas para melhorar o desempenho, mesmo que os dados sejam carregados com sucesso no mecanismo colunar.

A seguir