Todos os produtos
Search
Central de documentação

ApsaraDB for ClickHouse:Armazenamento em camadas de dados quentes e frios

Última atualização: Aug 14, 2026

Para reduzir custos de armazenamento, melhorar o desempenho de consultas e aumentar a utilização de recursos do sistema, os clusters da Alibaba Cloud ClickHouse Community-compatible Edition e Enterprise Edition com tipo de armazenamento ESSD_L1 ou ESSD_L2 oferecem suporte ao armazenamento em camadas de dados quentes e frios. Esse recurso permite armazenar dados em diferentes mídias conforme a frequência de acesso. Este tópico descreve como ativar o armazenamento em camadas de dados quentes e frios e configurar as políticas correspondentes.

Pré-requisitos

Community-compatible edition

  • O cluster deve executar a versão 20.8 ou posterior.

  • O recurso de backup de dados deve estar desativado no cluster.

Nota

Enterprise edition

O cluster precisa usar o tipo de armazenamento ESSD_L1 ou ESSD_L2. Para habilitar esse tipo de armazenamento, envie um ticket solicitando a inclusão da sua conta na lista de permissões.

Contexto

O armazenamento em camadas classifica os dados em duas categorias conforme a frequência de acesso:

  • Dados quentes: acessados com frequência. Ficam em discos de dados quentes, como ESSD ou ultra disk selecionados durante a criação do cluster, garantindo acesso de alto desempenho.

  • Dados frios: acessados raramente. São armazenados em discos de baixo custo para otimizar despesas. O armazenamento frio utiliza exclusivamente Object Storage Service (OSS) e não pode ser alterado para ESSD PL0 ou outros tipos de disco personalizados.

As políticas de armazenamento para dados quentes e frios funcionam da seguinte forma:

Community-compatible edition

Política de armazenamento

Descrição

Política padrão

Novos dados são gravados no disco de dados quentes para consultas de alto desempenho. Quando o espaço utilizado atinge um limiar definido, o sistema move automaticamente a maior parte dos dados para o disco frio e libera espaço.

Política baseada em TTL

Estende a política padrão. Permite adicionar uma cláusula TTL para mover automaticamente todos os dados anteriores a um intervalo especificado para o disco de dados frios.

Enterprise edition

O sistema transfere automaticamente dados sem modificações recentes para o OSS de menor custo e reduz as despesas de armazenamento.

  • TTL global: na Enterprise Edition, configure um TTL global para controlar o armazenamento em camadas de dados quentes e frios.

  • Momento da transferência: após ativar o armazenamento em camadas, o sistema verifica todos os arquivos de dados diariamente às 00:00 UTC. Partes de dados cuja idade excede o TTL global são movidas do disco quente para o disco frio (OSS).

Precauções

Community-compatible edition

  • Ative este recurso fora dos horários de pico. A ativação reinicia o cluster imediatamente. Durante a reinicialização, apenas a visualização das informações do cluster está disponível. Não é possível atualizar configurações, dimensionar o cluster ou modificar parâmetros.

  • Especifique uma política de armazenamento para suas tabelas ao usar este recurso. O ApsaraDB for ClickHouse oferece suporte apenas à política hot_to_cold. Políticas personalizadas, como configurar múltiplas políticas (por exemplo, default e hd_policy) que apontem para diretórios diferentes, não têm suporte.

    • Ao criar uma tabela, use SETTINGS storage_policy = 'hot_to_cold' para definir a política de armazenamento.

    • Modifique a política de armazenamento de uma tabela existente.

      Após 1º de janeiro de 2024

      Execute a instrução abaixo para alterar a política:

      ALTER TABLE <table_name> MODIFY SETTING storage_policy = 'hot_to_cold';

      Antes de 1º de janeiro de 2024

      Adicione uma nova política de armazenamento por meio de operações específicas de gerenciamento. Isso permite usar a nova política para migrar dados do disco quente para o disco frio.

  • Não é possível desativar este recurso após a ativação.

  • Clusters com armazenamento em camadas ativado não oferecem suporte a downgrade de disco.

Enterprise edition

  • Modificar dados no armazenamento frio — seja via operações Mutation, Optimize ou Merge acionado pelo sistema — recarrega os dados no armazenamento quente para reconstruir os arquivos. Os novos arquivos não retornam imediatamente ao armazenamento frio; eles só são transferidos novamente quando a idade ultrapassar o TTL global. Portanto, evite adições, exclusões ou modificações frequentes nos dados frios.

  • A transferência não ocorre instantaneamente. O sistema ajusta dinamicamente a taxa de transferência com base em fatores como a pressão de I/O atual no sistema de armazenamento. O processo pode levar várias horas, dependendo do volume de dados a mover.

  • As seguintes regras se aplicam à modificação do TTL:

    • Ao aumentar o TTL, a alteração entra em vigor na próxima janela de transferência. Contudo, dados já presentes no armazenamento frio não retornam ao armazenamento quente.

    • Ao diminuir o TTL, a mudança passa a valer na próxima janela de transferência.

  • O valor mínimo para o TTL global é de 1 dia, e o incremento mínimo de ajuste também é de 1 dia.

  • Clusters com armazenamento em camadas ativado não oferecem suporte a downgrade de disco.

Faturamento

  • As regras de faturamento são as seguintes:

    Tipo

    Detalhes

    Armazenamento de dados quentes

    A capacidade de armazenamento de dados quentes corresponde à capacidade adquirida para o cluster.

    Armazenamento de dados frios

    O armazenamento de dados frios segue o modelo de pagamento conforme o uso. Não é necessário adquirir uma quantidade fixa de espaço antecipadamente. A cobrança é horária, baseada no consumo real.

  • Para mais detalhes sobre os preços unitários do armazenamento de dados frios, consulte Storage space fees for the Community-compatible Edition e Pay-as-you-go billing for the Enterprise Edition.

  • Fórmula de cálculo: Taxa de armazenamento frio = Preço unitário do armazenamento frio × Uso de dados frios × Duração do uso.

  • Exemplo: Se o preço unitário for USD 0,000026 por GB-hora e você utilizar 2.000 GB de armazenamento frio entre 19:00 e 20:00, a taxa total será: USD 0,000026 por GB-hora × 2.000 GB × 1 hora = USD 0,052. Caso libere 500 GB e o uso real caia para 1.500 GB entre 20:00 e 21:00, o custo dessa hora será: USD 0,000026 por GB-hora × 1.500 GB × 1 hora = USD 0,039.

Nota

Os valores apresentados neste exemplo servem apenas como referência. Prevalecem os preços reais exibidos no console.

Ativar armazenamento em camadas

Community-compatible edition

  1. Faça login no console da Alibaba Cloud ClickHouse. No canto superior esquerdo da página, selecione a região onde o cluster está implantado.

  2. Na página Clusters, clique em aba Clusters of Community-compatible Edition e selecione o id do cluster desejado.

  3. No painel de navegação à esquerda, clique em Cold and hot layered storage.

  4. Clique em Click to Enable Layered Storage.

  5. Na caixa de diálogo exibida, clique em OK.

    Após confirmar a operação, o cluster será reiniciado. O recurso estará ativo quando o status do cluster mudar de Changing Configuration para Running.

Enterprise edition

Nota

Para a Alibaba Cloud ClickHouse Enterprise Edition, envie primeiro um ticket para adicionar sua conta à lista de permissões deste recurso. Em seguida, siga os passos abaixo para ativá-lo no seu cluster.

  1. Faça login no console da Alibaba Cloud ClickHouse. No canto superior esquerdo da página, selecione a região onde o cluster está implantado.

  2. Na página Clusters, clique em aba Enterprise Edition Clusters e selecione o id do cluster desejado.

  3. No painel de navegação à esquerda, clique em Cold and hot layered storage.

  4. Clique em Click to Enable Layered Storage.

  5. Na caixa de diálogo exibida, configure o TTL global.

  6. Clique em OK.

    O recurso estará ativo quando o status do cluster mudar para Running e a página Tiered Storage indicar que o recurso está Enabled.

Após a ativação, clique em ícone de edição ao lado de Parameter Value para ajustar o TTL global. O novo TTL entrará em vigor no próximo ciclo de transferência (00:00 UTC do dia seguinte).

Gerenciar políticas de armazenamento da Community-compatible edition

Política de armazenamento padrão

Ao ativar o armazenamento em camadas de dados quentes e frios, a política padrão inclui os seguintes parâmetros.

Parâmetro

Descrição

move_factor

Quando o espaço disponível no disco de dados quentes cai abaixo desta proporção, o sistema move automaticamente a maior parte dos dados para o disco frio.

O valor deste parâmetro varia entre [0,1]. O valor 0 desativa o armazenamento em camadas baseado na capacidade do disco. O padrão é 0,1, indicando que a movimentação automática ocorre quando o espaço livre é inferior a 10%. Você também pode definir uma política de armazenamento em camadas baseada em TTL ao criar uma tabela.

Nota

Para verificar o espaço em disco, consulte Verificar espaço em disco.

prefer_not_to_merge

Define se os dados no disco frio devem ser mesclados. Valores válidos:

  • true: os dados não são mesclados. Este é o valor padrão.

  • false: os dados são mesclados.

Política de armazenamento baseada em TTL

Adicione uma cláusula TTL à política padrão para mover automaticamente todos os dados anteriores a um intervalo especificado para o disco de dados frios.

Sintaxe

TTL <time_column> + INTERVAL <number> <unit> TO DISK 'cold_disk'

Parâmetros

Parâmetro

Descrição

time_column

Uma coluna do tipo de dado Date ou DateTime.

number unit

O intervalo de tempo.

Unidades comuns incluem DAY, WEEK, MONTH e YEAR.

Nota

Para mais informações sobre cláusulas TTL, consulte TTL para colunas e tabelas.

Exemplo

A instrução abaixo cria uma tabela e move todos os dados com mais de 90 dias para o disco de dados frios, tomando como base a coluna date.

CREATE TABLE ttl_test_tbl
(
    `f1` String,
    `f2` String,
    `f3` Int64,
    `f4` Float64,
    `date` Date
)
ENGINE = MergeTree()
PARTITION BY date
ORDER BY f1
TTL date + INTERVAL 90 DAY TO DISK 'cold_disk'
SETTINGS storage_policy = 'hot_to_cold';

Modificar uma política baseada em TTL

Altere a coluna Date ou DateTime e o intervalo de tempo de uma política de armazenamento em camadas baseada em TTL.

Precauções

  • Impacto nos dados:

    • Dados existentes: por padrão, a nova política também se aplica aos dados existentes, mas esse processo é assíncrono e leva tempo. Para aplicar a alteração imediatamente, execute a instrução ALTER TABLE ... MATERIALIZE TTL; após modificar a política. Se preferir não alterar a política de armazenamento dos dados existentes, execute a instrução SET materialize_ttl_after_modify=0; antes de modificar a política.

    • Novos dados seguem a estratificação definida pela nova política.

  • Após modificar uma política baseada em TTL, os dados que já estão no disco frio não retornam automaticamente ao disco quente. Para mover esses dados, consulte Mover dados entre discos quentes e frios.

Sintaxe

ALTER TABLE <table_name> ON CLUSTER default MODIFY TTL <time_column> + INTERVAL <number> <unit> TO DISK 'cold_disk';

Parâmetros

Parâmetro

Descrição

table_name

O nome da tabela.

time_column

A coluna alvo do tipo Date ou DateTime.

number unit

O intervalo de tempo.

Unidades comuns incluem DAY, WEEK, MONTH e YEAR.

Gerenciamento de dados da Community-compatible edition

Mover dados entre discos quentes e frios

  • Mova dados de um disco quente para um disco frio:

    ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'cold_disk';
  • Mova dados de um disco frio para um disco quente:

    ALTER TABLE <table_name> ON CLUSTER default MOVE PARTITION <partition> TO DISK 'default';
    Nota

    partition refere-se ao nome da partição, disponível na tabela system.parts.

Visualizar dados em discos quentes e frios

  • Visualize dados em um disco quente:

    SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='default' AND active = 1;
  • Visualize dados em um disco frio:

    SELECT * FROM system.parts WHERE database = '<db_name>' AND TABLE = '<tbl_name>' AND disk_name ='cold_disk' AND active = 1;

Verificar espaço em disco

Após ativar o armazenamento em camadas de dados quentes e frios, execute a instrução abaixo para verificar o espaço em disco:

SELECT * FROM system.disks;

O resultado retornado será semelhante ao seguinte:

┌─name─────┬─────────path───────────────────────────┬─free_space───────────┬─total_space──────────┬─used_space───┬─keep_free_space───┬──type──┐
│ cold_disk│ /clickhouse/data/data/disks/cold_disk/ │ 18446744073709551615 │ 18446744073709551615 │ 115312080698 │   0               │   OSS  │
│ default  │ /clickhouse/data/data/                 │ 201663209472         │ 207083249664         │ 5420040192   │   0               │  local │
└──────────┴────────────────────────────────────────┴──────────────────────┴──────────────────────┴──────────────┴───────────────────┴────────┘

A tabela a seguir descreve as colunas do conjunto de resultados.

Parâmetro

Descrição

name

O nome do disco.

  • cold_disk: o disco de dados frios.

  • default: o disco de dados quentes.

path

O caminho de armazenamento dos dados no disco.

free_space

O espaço disponível no disco, em bytes. O espaço disponível em um disco de dados frios não tem limite.

total_space

O espaço total no disco, em bytes. O espaço total em um disco de dados frios é efetivamente ilimitado.

used_space

O espaço em disco utilizado, em bytes.

keep_free_space

O espaço livre reservado, em bytes.

type

A mídia de armazenamento.

  • OSS: dados frios armazenados no Object Storage Service (OSS).

  • local: dados quentes armazenados em disco local.

Perguntas frequentes

P: Por que meus dados não estão sendo movidos do disco quente para o disco frio?

R: A movimentação de dados para o disco frio depende dos valores de move_ttl_info.min e move_ttl_info.max na tabela system.parts. Execute a instrução abaixo para consultar esses valores:

SELECT move_ttl_info.min, move_ttl_info.max FROM system.parts WHERE database = '<db_name>' AND table = '<tb_name>' AND disk_name = 'default'

Se a hora atual for anterior a qualquer um desses valores, o sistema não moverá a parte dos dados. Também é possível que o sistema esteja processando ou preparando a movimentação e a operação ainda não tenha sido concluída.