Uma técnica de gerenciamento de dadosO particionamento é, прежде de tudo, uma técnica de gerenciamento de dados, e não uma ferramenta de otimização de consultas. Embora possa melhorar o desempenho em cargas de trabalho específicas, não deve ser o primeiro mecanismo usado para acelerar consultas; a chave de particionamento deve ser escolhida com cuidado, com uma compreensão clara de suas implicações, e aplicada apenas quando estiver alinhada às necessidades do ciclo de vida dos dados ou a padrões de acesso bem compreendidos.
PARTITION BY no momento da criação da tabela e é comumente usado para agrupar linhas por intervalos de tempo, categorias ou outras dimensões relevantes para o negócio. Cada valor distinto da expressão de particionamento forma sua própria partição física em disco, e o ClickHouse armazena os dados em partes separadas para cada um desses valores. O particionamento melhora o gerenciamento de dados, simplifica as políticas de retenção e pode ajudar com determinados padrões de consulta.
Por exemplo, considere a tabela a seguir do conjunto de dados UK price paid, com uma chave de particionamento toStartOfMonth(date).
toStartOfMonth(date). Em seguida, para cada partição identificada, as linhas são processadas como de costume, executando várias etapas sequenciais (① Ordenação, ② Divisão em colunas, ③ Compressão, ④ Gravação em disco).
Para uma explicação mais detalhada sobre particionamento, recomendamos este guia.
Com o particionamento habilitado, o ClickHouse apenas faz mesclagens de partes de dados dentro das partições, mas não entre partições. Ilustramos isso para a tabela de exemplo acima:
Aplicações do particionamento
Escolha uma chave de particionamento de baixa cardinalidade
toStartOfMonth(date) permite que o engine ignore completamente as partições irrelevantes e suas partes.
Embora o particionamento possa melhorar o desempenho em alguns padrões de consulta, ele é, прежде de tudo, um recurso de gerenciamento de dados. Em muitos casos, consultar todas as partições pode ser mais lento do que usar uma tabela sem particionamento, devido ao aumento da fragmentação dos dados e à varredura de mais partes. Use o particionamento com critério e sempre garanta que a chave escolhida tenha baixa cardinalidade e esteja alinhada às políticas de ciclo de vida dos seus dados (por exemplo, retenção via TTL). Se você não tiver certeza de que o particionamento é necessário, talvez seja melhor começar sem ele e otimizar depois com base nos padrões de acesso observados.