Pular para o conteúdo principal

Configurações de conexão

Para um detalhamento completo de cada opção, com valores padrão, parâmetros de DSN, boas práticas e solução de problemas, consulte a Referência de configuração.
Ao abrir uma conexão, uma struct Options pode ser usada para controlar o comportamento do cliente. As configurações a seguir estão disponíveis:
Exemplo completo

TLS

Em baixo nível, todos os métodos de conexão do cliente (DSN/OpenDB/Open) usarão o pacote tls do Go para estabelecer uma conexão segura. O cliente sabe que deve usar TLS se a estrutura Options contiver um ponteiro tls.Config não nulo.
Exemplo completo Esta TLS.Config mínima normalmente é suficiente para se conectar à porta nativa segura (geralmente 9440) em um servidor ClickHouse. Se o servidor ClickHouse não tiver um certificado válido (expirado, com hostname incorreto, não assinado por uma autoridade certificadora raiz reconhecida publicamente), InsecureSkipVerify pode ser true, mas isso é fortemente desaconselhado.
Exemplo completo Se parâmetros adicionais de TLS forem necessários, o código da aplicação deverá definir os campos desejados na struct tls.Config. Isso pode incluir conjuntos de cifras específicos, forçar uma versão específica do TLS (como 1.2 ou 1.3), adicionar uma cadeia interna de certificados de AC, adicionar um certificado de cliente (e a chave privada) se exigido pelo servidor ClickHouse, além da maioria das outras opções associadas a uma configuração de segurança mais especializada.

Autenticação

Especifique uma struct Auth nos detalhes da conexão para informar um nome de usuário e uma senha.
Exemplo completo

Conectando-se a vários nós

É possível especificar vários endereços por meio da estrutura Addr.
Exemplo completo Há três estratégias de conexão disponíveis:
  • ConnOpenInOrder (padrão) - os endereços são usados em ordem. Os endereços seguintes só são utilizados se houver falha ao se conectar usando os endereços anteriores da lista. Na prática, essa é uma estratégia de failover.
  • ConnOpenRoundRobin - A carga é distribuída entre os endereços usando uma estratégia round-robin.
  • ConnOpenRandom - Um nó é selecionado aleatoriamente da lista de endereços.
Isso pode ser controlado pela opção ConnOpenStrategy
Exemplo completo

Pool de conexões

O cliente mantém um pool de conexões e as reutiliza entre as consultas conforme necessário. No máximo, MaxOpenConns conexões serão usadas a qualquer momento, e o tamanho máximo do pool é controlado por MaxIdleConns. O cliente obtém uma conexão do pool para cada execução de consulta e a devolve ao pool para reutilização. Uma conexão é usada durante todo o ciclo de vida de um lote e liberada em Send(). Não há garantia de que a mesma conexão do pool será usada em consultas subsequentes, a menos que o usuário defina MaxOpenConns=1. Isso raramente é necessário, mas pode ser exigido em casos em que os usuários estejam usando tabelas temporárias. Além disso, observe que ConnMaxLifetime é, por padrão, de 1 hora. Isso pode fazer com que a carga no ClickHouse fique desbalanceada se nós saírem do cluster. Isso pode acontecer quando um nó fica indisponível: as conexões passam a ser distribuídas entre os outros nós. Essas conexões persistirão e não serão renovadas por 1 hora por padrão, mesmo que o nó problemático retorne ao cluster. Considere reduzir esse valor em casos de workload intenso. O pool de conexões está habilitado tanto para Native (TCP) quanto para o protocolo HTTP.

Logging

O cliente oferece suporte a logging estruturado por meio do pacote padrão log/slog do Go, usando o campo Logger em Options. Os campos mais antigos Debug e Debugf estão obsoletos, mas ainda funcionam por compatibilidade retroativa (prioridade: Debugf > Logger > no-op).
Você também pode enriquecer o logger com contexto da aplicação:
Exemplo completo

Compressão

O suporte a métodos de compressão depende do protocolo subjacente em uso. Para o protocolo nativo, o cliente oferece suporte à compressão LZ4 e ZSTD. Isso é feito apenas no nível de bloco. A compressão pode ser habilitada incluindo uma configuração Compression na conexão.
Exemplo completo Técnicas adicionais de compressão estão disponíveis ao usar transporte HTTP: gzip, deflate e br. Consulte API de Banco de Dados/SQL - Compressão para detalhes.

TCP vs HTTP

O transporte é definido por uma única opção de config — todo o restante deste guia se aplica a ambos. Veja o que muda: Para alternar qualquer uma das APIs para HTTP:
Última modificação em 10 de junho de 2026