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

Nesta página, descrevemos como manter a atualização dos dados no armazenamento de colunas do mecanismo colunar no AlloyDB para PostgreSQL.

À medida que as linhas da tabela são adicionadas, excluídas ou atualizadas, o mecanismo colunar não atualiza imediatamente os dados no armazenamento de colunas. Em vez disso, ele marca o conteúdo afetado no armazenamento de colunas como inválido, e as consultas são planejadas e executadas usando dados orientados a colunas do armazenamento de colunas e dados orientados a linhas do cache de linhas e do armazenamento de banco de dados.

Com o tempo, à medida que mais e mais blocos de dados ficam inválidos, as melhorias de desempenho da consulta fornecidas pelo mecanismo colunar são reduzidas até o ponto em que os dados colunares precisam ser atualizados para recuperar essas melhorias. 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 50, indicando que determinado conteúdo no repositório de colunas é marcado para atualização quando 50% do conteúdo se torna inválido. Você pode mudar esse limite de atualização para ajustar a sobrecarga da atualização automática e, possivelmente, melhorar a performance contínua de consultas para sua carga de trabalho de aplicativo.

Além disso, é possível atualizar manualmente tabelas e índices do ScaNN carregados no mecanismo colunar a qualquer momento. Normalmente, você faz uma atualização manual quando quer que as mudanças em uma tabela sejam refletidas no columnstore o mais rápido possível após a alteração.

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 repositório de colunas como inválidos. Para verificar a porcentagem de dados inválidos nas suas tabelas e visualizações materializadas, consulte a visualização g_columnar_relations. Isso ajuda você a decidir se precisa fazer 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

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 na sua 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 seu cluster, encontre a instância e clique em Editar.
  4. Na seção Flags, adicione uma nova flag ou modifique a flag google_columnar_engine.refresh_threshold_percentage atual.
  5. Defina o valor como um número inteiro entre 1 e 100. Esse valor representa a porcentagem de dados inválidos que aciona uma atualização.
  6. Clique em Concluído.

gcloud

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

Para mudar 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 1 e 100. Esse valor especifica a porcentagem de blocos de dados no conteúdo que precisam ficar 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 as tabelas e os índices ScaNN no columnstore

É possível atualizar manualmente tabelas e índices do ScaNN no mecanismo colunar a qualquer momento usando funções SQL dedicadas.

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 do ScaNN 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 do ScaNN a ser atualizado.