Manter a atualização dos dados do armazenamento de colunas na memória

À medida que as linhas mudam, o mecanismo colunar marca os dados afetados do armazenamento de colunas no AlloyDB para PostgreSQL como inválidos, e a aceleração de consultas diminui gradualmente. Para manter as consultas rápidas, ajuste o limite de atualização automática ou atualize manualmente as tabelas e os índices de vetor.

O mecanismo colunar não atualiza imediatamente o repositório de colunas quando as linhas da tabela são adicionadas, excluídas ou atualizadas. Em vez disso, as consultas são planejadas e executadas usando dados orientados por colunas do repositório de colunas e dados orientados por linhas do cache de linhas e do armazenamento do banco de dados.

Com o tempo, à medida que mais e mais blocos de dados se tornam inválidos, as melhorias de desempenho de consulta fornecidas pelo mecanismo colunar são reduzidas ao ponto em que os dados colunares precisam ser atualizados para recuperar as melhorias de desempenho de consulta. Quando esse limite de atualização é atingido, o mecanismo colunar usa um job em segundo plano para atualizar os dados inválidos no repositório de colunas. Por padrão, o mecanismo colunar usa um limite de atualização de 25, indicando que determinado conteúdo no repositório de colunas é marcado para atualização quando 25% do conteúdo se torna inválido. É possível mudar esse limite de atualização para ajustar a sobrecarga da atualização automática e, possivelmente, melhorar o desempenho contínuo das consultas para a carga de trabalho do aplicativo.

Faça uma atualização manual de tabelas e índices vetoriais HNSW e ScaNN quando quiser que as mudanças em uma tabela sejam refletidas no armazenamento de colunas o mais rápido possível após as alterações.

Verificar a porcentagem de dados inválidos

À medida que o aplicativo adiciona, exclui ou atualiza linhas em uma tabela, o mecanismo colunar marca os dados afetados no armazenamento de colunas como inválidos. Para verificar a porcentagem de dados inválidos nas tabelas e visualizações materializadas, consulte a visualização g_columnar_relations. Isso ajuda a decidir se é necessário realizar uma atualização manual ou ajustar o limite de atualização automática.

Para conferir a porcentagem de invalidação de todas as relações no armazenamento colunar, execute a seguinte consulta:

SELECT relation_name, invalid_percentage FROM g_columnar_relations;

Para verificar a porcentagem de invalidação de uma tabela específica, adicione uma cláusula WHERE à consulta.

SELECT   relation_name,
  CASE
    WHEN total_block_count > 0 THEN (invalid_block_count * 100.0 / total_block_count)
    ELSE 0.0
  END AS invalid_block_percentage
FROM
  g_columnar_relations
WHERE
 relation_name = 'TABLE_NAME';

Substitua TABLE_NAME por uma string que contenha o nome da tabela ou da visualização materializada. Se o recurso estiver em um esquema diferente de public, especifique o nome do esquema usando o formato SCHEMA_NAME.TABLE_NAME, por exemplo, myschema.mytable.

Para verificar a porcentagem de invalidação de um índice específico, adicione uma cláusula WHERE à consulta.

SELECT   index_name,
  CASE
    WHEN total_block_count > 0 THEN (invalid_block_count * 100.0 / total_block_count)
    ELSE 0.0
  END AS invalid_block_percentage
FROM
  g_columnar_indexes
WHERE
  index_name = 'INDEX_NAME';

Substitua INDEX_NAME por uma string que contenha o nome do índice vetorial.

Mudar o limite de atualização do mecanismo colunar

Para mudar o limite de atualização do mecanismo colunar, modifique o valor da flag de banco de dados google_columnar_engine.refresh_threshold_percentage da instância do AlloyDB.

Console

  1. No Google Cloud console, acesse a página Clusters.

    Acessar Clusters

  2. Clique no nome do cluster que contém a instância que você quer configurar.
  3. Na seção Instâncias no cluster, encontre a instância e clique em Editar.
  4. Na seção Sinalizações, adicione uma nova sinalização ou modifique a sinalização google_columnar_engine.refresh_threshold_percentage atual.
  5. Defina o valor como um número inteiro entre 0 e 100 (ou -1 para desativar a atualização automática). Esse valor representa a porcentagem de dados inválidos que aciona uma atualização.
  6. Clique em Concluído.

gcloud

Para usar a CLI gcloud, você pode instalar e inicializar a Google Cloud CLI ou usar o Cloud Shell.

Para alterar o limite de atualização do mecanismo colunar, execute o seguinte comando:
gcloud alloydb instances update INSTANCE_ID \
    --database-flags=google_columnar_engine.refresh_threshold_percentage=THRESHOLD \
    --cluster=CLUSTER_ID \
    --region=REGION_ID \
    --project=PROJECT_ID

Substitua:

  • INSTANCE_ID: o ID da instância.
  • THRESHOLD: um valor inteiro entre 0 e 100 (ou -1 para desativar a atualização automática). Esse valor especifica a porcentagem de blocos de dados no conteúdo que precisam se tornar inválidos para que o conteúdo seja marcado para atualização.
  • CLUSTER_ID: o ID do cluster em que a instância está localizada.
  • REGION_ID: a região do cluster.
  • PROJECT_ID: o ID do projeto.

Atualizar manualmente tabelas e índices vetoriais no armazenamento de colunas

É possível atualizar manualmente tabelas e índices vetoriais no mecanismo colunar a qualquer momento usando funções SQL dedicadas. Os tipos de índice compatíveis são ScaNN e HNSW.

Para atualizar os dados de uma tabela no mecanismo colunar, execute a função google_columnar_engine_refresh.

SELECT google_columnar_engine_refresh('TABLE_NAME');

Substitua TABLE_NAME por uma string que contenha o nome da tabela ou da visualização materializada. Se o recurso estiver em um esquema diferente de public, especifique o nome do esquema usando o formato SCHEMA_NAME.TABLE_NAME, por exemplo, myschema.mytable.

Da mesma forma, para atualizar manualmente um índice vetorial no mecanismo colunar, execute a função google_columnar_engine_refresh_index.

SELECT google_columnar_engine_refresh_index(index => 'INDEX_NAME');

Substitua INDEX_NAME por uma string que contenha o nome do índice a ser atualizado.