Visão geral do mecanismo colunar

Selecione uma versão da documentação:

Este documento fornece instruções para usar o mecanismo colunar do AlloyDB Omni e pressupõe que você já conhece o PostgreSQL.

O mecanismo colunar do AlloyDB Omni acelera o processamento de consulta SQL de verificações, junções e agregações fornecendo os seguintes 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.

  • Um planejador de consultas e um mecanismo de execução colunares que oferecem suporte ao uso do repositório de colunas em consultas.

É possível usar o mecanismo colunar na instância primária, em uma instância de pool de leitura ou réplica de leitura, ou em ambas. 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 performance.

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

Por padrão, o mecanismo colunar é definido para usar 1 GB da memória da instância. Dependendo da sua carga de trabalho, do uso da memória e se você tem uma instância de pool de leitura ou uma réplica de leitura configurada, é 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 de pool de leitura ou réplica de leitura.

Para conferir e monitorar o uso da memória pelo mecanismo colunar, consulte Conferir 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 do mecanismo colunar para sua instância, consulte Recomendar o tamanho da memória do repositório de colunas.

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 se beneficiam mais do mecanismo colunar:

Operação Padrões de consulta
Verificação de tabela Filtros seletivos, como cláusulas WHERE.
Um pequeno número de colunas de uma tabela ou visualização materializada maior.
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 verificação colunar.
Desagrupados ou agrupados por colunas.
ORDER BY Somente se o operador estiver no início da consulta de uma verificação colunar.
SORT Somente se o operador estiver no início da consulta de uma verificação colunar e classificar apenas nas colunas de base da tabela ou da visualização materializada.
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 as junções estiverem no início da consulta de uma verificação colunar.

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 em uma instância do AlloyDB Omni

Para usar o mecanismo colunar em uma instância do AlloyDB Omni, 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 a reinicialização do banco de dados.

  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. 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 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
  • uuid
  • varchar

O mecanismo colunar ignora qualquer tentativa de adicionar manualmente colunas com tipos de dados sem suporte 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 estrangeiras

  • 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 Omni 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 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 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 visã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 a visualização foi afetada. Se você faz mudanças frequentes ou em grande volume na tabela ou visualização, o invalid_block_count é alto.

A seguir