Armazenamento de dadosOSS
Embora o ClickHouse seja voltado para cargas de trabalho analíticas de alto volume, em algumas situações é possível modificar ou
excluir dados existentes. Essas operações são chamadas de “mutações” e são executadas com o comando ALTER TABLE.
Atualizando dados
ALTER TABLE...UPDATE para atualizar linhas de uma tabela:
<expression> é o novo valor da coluna quando <filter_expr> é satisfeito. <expression> deve ter o mesmo tipo de dado da coluna ou poder ser convertido para esse tipo usando o operador CAST. <filter_expr> deve retornar um valor UInt8 (zero ou diferente de zero) para cada linha de dados. Várias instruções UPDATE <column> podem ser combinadas em um único comando ALTER TABLE, separadas por vírgulas.
Exemplos:
-
Uma mutação como esta permite substituir
visitor_idpor novos valores usando uma consulta em Dicionário: -
Modificar vários valores em um único comando pode ser mais eficiente do que executar vários comandos:
-
As mutações podem ser executadas
ON CLUSTERem tabelas com shards:
Não é possível atualizar colunas que fazem parte da chave primária ou da chave de ordenação.
Excluindo dados
ALTER TABLE para excluir linhas:
<filter_expr> deve retornar um valor UInt8 para cada linha de dados.
Exemplos
-
Exclua quaisquer registros em que uma coluna esteja em um array de valores:
-
O que esta consulta altera?
Para excluir todos os dados de uma tabela, é mais eficiente usar o comando
TRUNCATE TABLE [<database].]<table>. Esse comando também pode ser executado ON CLUSTER.DELETE para mais detalhes.
Exclusões leves
DELETE FROM, conhecido como exclusão leve. As linhas excluídas são marcadas como excluídas imediatamente e serão automaticamente filtradas de todas as consultas subsequentes, portanto você não precisa esperar pela mesclagem das partes nem usar a palavra-chave FINAL. A limpeza dos dados acontece de forma assíncrona em segundo plano.
hits em que a coluna Title contém o texto hello:
- Esse recurso está disponível apenas para a família de mecanismos de tabela
MergeTree. - As exclusões leves são síncronas por padrão e aguardam que todas as réplicas processem a exclusão. Esse comportamento é controlado pela configuração
lightweight_deletes_sync.