À 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 os dados de uma tabela no repositório de colunas 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.
Mudar o limite de atualização do mecanismo colunar
Edite o valor da flag de banco de dados google_columnar_engine.refresh_threshold_percentage
para mudar o limite de atualização do mecanismo colunar.
ALTER SYSTEM SET google_columnar_engine.refresh_threshold_percentage=THRESHOLD;
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.
Atualizar manualmente os dados de uma tabela no armazenamento de colunas
Execute a função SQL google_columnar_engine_refresh
para atualizar manualmente
os dados de uma tabela no armazenamento de colunas na memória.
SELECT google_columnar_engine_refresh(TABLE_NAME);
TABLE_NAME
: uma string que contém o nome da tabela ou da visualização materializada. Se a tabela ou a visualização estiver em um esquema diferente
de public
, especifique o nome do esquema usando o formato
SCHEMA_NAME.TABLE_NAME
, por exemplo, myschema.mytable
.