Pular para o conteúdo principal
Ao usar o motor de tabela Memory no ClickHouse Cloud, os dados não são replicados em todos os nós (por design). Para garantir que todas as consultas sejam roteadas para o mesmo nó e que o motor de tabela Memory funcione como esperado, você pode fazer uma das seguintes coisas:
  • Executar todas as operações na mesma sessão
  • Usar um cliente que use TCP ou a interface nativa (o que habilita suporte a conexões com afinidade), como o clickhouse-client
O motor Memory armazena dados na RAM, em formato não comprimido. Os dados são armazenados exatamente na forma em que são recebidos ao serem lidos. Em outras palavras, ler dessa tabela não tem custo algum. O acesso concorrente aos dados é sincronizado. Os bloqueios são curtos: operações de leitura e gravação não bloqueiam umas às outras. Índices não são suportados. A leitura é paralelizada. A produtividade máxima (mais de 10 GB/s) é alcançada em consultas simples, porque não há leitura de disco, descompressão nem desserialização de dados. (Vale observar que, em muitos casos, a produtividade do motor MergeTree é quase tão alta.) Ao reiniciar o servidor, os dados desaparecem da tabela e ela fica vazia. Normalmente, o uso desse motor de tabela não se justifica. No entanto, ele pode ser usado para testes e para tarefas em que a velocidade máxima é necessária com um número relativamente pequeno de linhas (até aproximadamente 100.000.000). O motor Memory é usado pelo sistema para tabelas temporárias com dados externos de consulta (consulte a seção “Dados externos para o processamento de uma consulta”) e para implementar GLOBAL IN (consulte a seção “Operadores IN”). É possível especificar limites superior e inferior para limitar o tamanho da tabela do motor Memory, permitindo efetivamente que ela atue como um buffer circular (consulte Parâmetros do motor).

Parâmetros do motor

  • min_bytes_to_keep — Quantidade mínima de bytes a manter quando a tabela Memory estiver sujeita a limite de tamanho.
    • Valor padrão: 0
    • Requer max_bytes_to_keep
  • max_bytes_to_keep — Quantidade máxima de bytes a manter na tabela Memory; as linhas mais antigas são excluídas a cada inserção (ou seja, buffer circular). O total máximo de bytes pode exceder o limite informado se o lote mais antigo de linhas a ser removido ficar abaixo do limite de min_bytes_to_keep ao adicionar um bloco grande.
    • Valor padrão: 0
  • min_rows_to_keep — Quantidade mínima de linhas a manter quando a tabela Memory estiver sujeita a limite de tamanho.
    • Valor padrão: 0
    • Requer max_rows_to_keep
  • max_rows_to_keep — Quantidade máxima de linhas a manter na tabela Memory; as linhas mais antigas são excluídas a cada inserção (ou seja, buffer circular). O total máximo de linhas pode exceder o limite informado se o lote mais antigo de linhas a ser removido ficar abaixo do limite de min_rows_to_keep ao adicionar um bloco grande.
    • Valor padrão: 0
  • compress - Indica se os dados devem ser compactados na memória.
    • Valor padrão: false

Uso

Inicialize as configurações
Altere as configurações
Observação: Os parâmetros de limite de bytes e rows podem ser definidos ao mesmo tempo; no entanto, serão respeitados os menores limites de max e min.

Exemplos

além disso, para as linhas:
Última modificação em 12 de junho de 2026