Sobre o mecanismo de colunas do AlloyDB

O mecanismo colunar do AlloyDB para PostgreSQL acelera as consultas SQL que verificam, unem e agregam grandes quantidades de dados armazenando colunas selecionadas na memória em um formato orientado a colunas. É possível usá-la em instâncias principais e de pool de leitura, e a colunização automática pode escolher as colunas para você.

O mecanismo colunar oferece os seguintes 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. Também é possível adicionar expressões usadas com frequência ao armazenamento de colunas.

  • Um planejador de consultas e um mecanismo de execução colunares 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. Quando o mecanismo colunar está ativado em uma instância de pool de leitura, é possível ativar o encaminhamento de consulta transparente para rotear automaticamente o tráfego somente leitura para ela.

Também é possível usar a colunizaçã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 desempenho.

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

Por padrão, o mecanismo colunar é configurado para usar 30% da memória da instância (ou 10% em uma instância de 1 vCPU). Dependendo da carga de trabalho, do uso da 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 conferir e monitorar o uso da memória pelo mecanismo colunar, consulte Conferir 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 do mecanismo colunar para sua instância, consulte Recomendar o tamanho da memória do repositório de colunas.

Tipos de consulta que se beneficiam do mecanismo colunar

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

  • Verificações de tabela

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

    • Eles 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 estão agrupadas por colunas.
  • ORDER-BY e SORT: somente quando ORDER-BY ou SORT estiver 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 mesclagem for usado.

  • Mesclagens seletivas somente se as mesclagens estiverem no início da consulta de uma verificação 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 gerais:

  1. Ative o mecanismo na instância.

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

  2. Adicione colunas ao armazenamento de colunas.

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

  3. É possível acompanhar o que está no armazenamento 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 você pode adicionar ao repositório de colunas

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

Tipos de dados compatíveis

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

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 pelo mecanismo colunar, mesmo que outras tabelas na mesclagem tenham colunas não compatíveis.

O mecanismo colunar é compatível apenas com colunas que têm 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 incompatí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 que não são de folha

  • Tabelas externas

Limitações do mecanismo colunar

  • Se você estiver executando uma consulta analítica em uma coluna que tenha um índice, o otimizador do AlloyDB poderá optar por usar o armazenamento de linhas.
  • As colunas adicionadas manualmente ao repositório não são removidas de forma automática. Para forçar a remoção de colunas adicionadas manualmente, use google_columnar_engine_drop() na instância.
  • A colunizaçã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 ver os tipos de dados compatíveis, consulte tipos de dados compatíveis.
  • Atualizações frequentes nas 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 as atualizações do mecanismo colunar com mais frequência.

    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ê tiver mudanças frequentes ou de alto volume na tabela ou visualização, o invalid_block_count será alto.

  • Não é possível preencher uma tabela particionada diretamente 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, normalmente menos de 5.000, o planejador de consultas pode optar por usar o armazenamento de linhas em vez do armazenamento colunar para melhorar o desempenho, mesmo que os dados sejam carregados com sucesso no mecanismo colunar.

A seguir