À medida que as linhas da tabela são adicionadas, excluídas ou atualizadas, o mecanismo colunar não atualiza imediatamente os dados no repositório de colunas. Em vez disso, ele marca o conteúdo afetado no repositório de colunas como inválido, e as consultas são planejadas e executadas usando dados orientados a colunas do repositório 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 se tornam inválidos, as melhorias de desempenho de consultas fornecidas pelo mecanismo colunar são reduzidas a ponto de os dados colunares precisarem ser atualizados para recuperar as melhorias de desempenho de consultas. 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 o conteúdo fornecido no repositório de colunas é marcado para atualização quando 50% 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, potencialmente, ter um melhor desempenho de consulta contínuo para a carga de trabalho do aplicativo.
Além disso, é possível atualizar manualmente tabelas e índices do ScaNN carregados no mecanismo colunar a qualquer momento. Normalmente, você realiza uma atualização manual quando quer que as mudanças em uma tabela sejam refletidas no repositório de colunas o mais rápido possível após fazer as mudanças.
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. É possível verificar a porcentagem de dados inválidos para tabelas e visualizações materializadas consultando 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 repositório 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, siga estas etapas:
Abra o manifesto do cluster de banco de dados
DBCluster.Na seção
primarySpec, adicione o parâmetrogoogle_columnar_engine.refresh_threshold_percentageao blocoparameters:apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME spec: # ... existing cluster configuration ... primarySpec: # ... existing primary configuration ... parameters: google_columnar_engine.refresh_threshold_percentage: "THRESHOLD"Substitua as seguintes variáveis:
- DB_CLUSTER_NAME: o nome do cluster de banco de dados.
- THRESHOLD: um valor inteiro entre
1e100. 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.
Aplique o manifesto
DBClusteratualizado:kubectl apply -f DB_CLUSTER_MANIFESTSubstitua
DB_CLUSTER_MANIFESTpelo caminho para o manifestoDBClustermodificado.
Atualizar manualmente tabelas e índices de vetor no repositório de colunas
É possível atualizar manualmente tabelas e índices de vetor 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 de vetor 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.