No ClickHouse Cloud, se o serviço tiver sido criado com uma versão anterior à 25.4, será necessário definir a compatibilidade para pelo menos 25.4 usando
SET compatibility=25.4.Criando uma tabela
Parâmetros do motor
join_strictness
join_strictness – strictness do JOIN.
join_type
join_type – tipo de JOIN.
Colunas-chave
k1[, k2, ...] – Colunas-chave da cláusula USING usadas na operação JOIN.
Informe os parâmetros join_strictness e join_type sem aspas, por exemplo, Join(ANY, LEFT, col1). Eles devem corresponder à operação JOIN para a qual a tabela será usada. Se os parâmetros não corresponderem, o ClickHouse não lança exceção e pode retornar dados incorretos.
Detalhes e recomendações
Armazenamento de dados
Os dados da tabelaJoin ficam sempre na RAM. Ao inserir linhas em uma tabela, o ClickHouse grava blocos de dados no diretório em disco para que possam ser restaurados quando o servidor for reiniciado.
Se o servidor for reiniciado de forma incorreta, o bloco de dados em disco pode ser perdido ou corrompido. Nesse caso, talvez seja necessário excluir manualmente o arquivo com os dados corrompidos.
Selecionando e inserindo dados
Você pode usar consultasINSERT para adicionar dados a tabelas do motor Join. Se a tabela foi criada com a strictness ANY, os dados com chaves duplicadas são ignorados. Com a strictness ALL, todas as linhas são adicionadas.
Os principais casos de uso de tabelas do motor Join são os seguintes:
- Colocar a tabela no lado direito de uma cláusula
JOIN. - Chamar a função joinGet, que permite extrair dados da tabela da mesma forma que de um dicionário.
Excluindo dados
As consultasALTER DELETE em tabelas com motor Join são implementadas como mutações. A mutação DELETE lê os dados filtrados e sobrescreve os dados em memória e no disco.
Limitações e configurações
Ao criar uma tabela, as seguintes configurações são aplicadas:join_use_nulls
join_use_nulls
max_rows_in_join
max_rows_in_join
max_bytes_in_join
max_bytes_in_join
join_overflow_mode
join_overflow_mode
join_any_take_last_row
join_any_take_last_row
join_use_nulls
Persistente
Desabilita a persistência dos motores de tabela Join e Set. Reduz a sobrecarga de E/S. Adequado para cenários que priorizam desempenho e não exigem persistência. Valores possíveis:- 1 — Habilitado.
- 0 — Desabilitado.
1.
As tabelas do motor Join não podem ser usadas em operações GLOBAL JOIN.
Uma row policy em uma tabela com o motor Join filtra um SELECT simples feito nela, mas um JOIN ou joinGet lê a tabela hash preparada tal como está e não consegue filtrar suas linhas; portanto, enquanto uma policy se aplicar à tabela, essas consultas falham com ACCESS_DENIED.
O motor Join permite especificar a configuração join_use_nulls na instrução CREATE TABLE. A consulta SELECT deve ter o mesmo valor de join_use_nulls.
Exemplos de uso
Criando a tabela à esquerda:Join da direita:
Join, especificando o valor da chave de junção:
Join: