Mantenha a atualidade dos dados do armazenamento de colunas na memória

Esta página descreve como manter a atualidade dos dados no arquivo de colunas do motor de colunas no AlloyDB for PostgreSQL.

À medida que as linhas da tabela são adicionadas, eliminadas ou atualizadas, o motor colunar não atualiza imediatamente os dados no armazenamento de colunas. Em vez disso, marca o conteúdo afetado no armazenamento de colunas como inválido, e as consultas são planeadas e executadas usando dados orientados por colunas do armazenamento de colunas e dados orientados por linhas da cache de linhas e do armazenamento de base de dados.

Ao longo do tempo, à medida que mais e mais blocos de dados se tornam inválidos, as melhorias no desempenho das consultas fornecidas pelo motor de colunas são reduzidas até ao ponto em que os dados de colunas têm de ser atualizados para recuperar as melhorias no desempenho das consultas. Quando este limite de atualização é atingido, o motor de colunas usa uma tarefa de segundo plano para atualizar os dados inválidos no arquivo de colunas. Por predefinição, o motor colunar usa um limite de atualização de 50, o que indica que o conteúdo fornecido no armazenamento de colunas é marcado para atualização quando 50% do respetivo conteúdo se torna inválido. Pode alterar este limite de atualização para ajustar a sobrecarga da atualização automática e, potencialmente, obter um melhor desempenho das consultas contínuas para a carga de trabalho da sua aplicação.

Além disso, pode atualizar manualmente as tabelas e os índices ScaNN carregados no motor de colunas em qualquer altura. Normalmente, faz uma atualização manual quando quer que as alterações a uma tabela se reflitam no armazenamento de colunas o mais rapidamente possível após fazer as alterações.

Verifique a percentagem de dados inválidos

À medida que a sua aplicação adiciona, elimina ou atualiza linhas numa tabela, o motor de colunas marca os dados afetados no armazenamento de colunas como inválidos. Pode verificar a percentagem de dados inválidos para as suas tabelas e vistas materializadas consultando a vista g_columnar_relations. Isto ajuda a decidir se precisa de fazer uma atualização manual ou ajustar o limite de atualização automática.

Para ver a percentagem de invalidação de todas as relações no armazenamento em colunas, execute a seguinte consulta:

SELECT relation_name, invalid_percentage FROM g_columnar_relations;

Para verificar a percentagem 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 vista materializada. Se o recurso estiver num esquema diferente de public, especifique o nome do esquema através do formato SCHEMA_NAME.TABLE_NAME, por exemplo, myschema.mytable.

Para verificar a percentagem 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

Altere o limite de atualização do motor de colunas

Para alterar o limite de atualização do motor colunar, tem de modificar o valor da google_columnar_engine.refresh_threshold_percentage flag da base de dados para a sua instância do AlloyDB.

Consola

  1. Na Google Cloud consola, aceda à página Clusters.

    Aceda a Clusters

  2. Clique no nome do cluster que contém a instância que quer configurar.
  3. Na secção Instâncias no cluster, encontre a instância e clique em Editar.
  4. Na secção Flags, adicione uma nova flag ou modifique a flag google_columnar_engine.refresh_threshold_percentage existente.
  5. Defina o valor como um número inteiro entre 1 e 100. Este valor representa a percentagem de dados inválidos que aciona uma atualização.
  6. Clique em Concluído.

gcloud

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

Para alterar o limite de atualização do motor de colunas, 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 o seguinte:

  • INSTANCE_ID: o ID da instância.
  • THRESHOLD: um valor de número inteiro entre 1 e 100. Este valor especifica a percentagem de blocos de dados no conteúdo que têm de ficar inválidos para que o conteúdo seja marcado para atualização.
  • CLUSTER_ID: o ID do cluster onde a instância está localizada.
  • REGION_ID: a região do cluster.
  • PROJECT_ID: o ID do projeto.

Atualize manualmente as tabelas e os índices ScaNN no armazenamento de colunas

Pode atualizar manualmente as tabelas e os índices do ScaNN no motor de colunas em qualquer altura através de funções SQL dedicadas.

Para atualizar os dados de uma tabela no motor de colunas, 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 vista materializada. Se o recurso estiver num esquema diferente de public, especifique o nome do esquema através do formato SCHEMA_NAME.TABLE_NAME, por exemplo, myschema.mytable.

Da mesma forma, para atualizar manualmente um índice ScaNN no motor 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 ScaNN a atualizar.