Pular para o conteúdo principal
Esta página documenta todas as opções configuráveis do clickhouse-go v2.x. Para um guia com exemplos de código, consulte Configuração.
Anotações de versãoAs opções adicionadas no clickhouse-go v2.35.0 ou posterior são marcadas com (Desde a vX.Y.Z) ao lado da descrição. As opções sem a tag “Since” estão disponíveis desde a v2.0 e estão presentes em todos os lançamentos com suporte.

Como as opções são definidas

As opções existem em três escopos: Quando os escopos se sobrepõem, o escopo mais específico prevalece: Lote > Consulta > Conexão. Para Settings, as chaves no nível da consulta são mescladas com as chaves no nível da conexão; em caso de conflito, prevalece o nível da consulta. Via a struct Options:
Via string de conexão DSN:
Por meio do conector (database/sql com a struct Options):
Por meio do contexto (por consulta):

Opções de conexão

Protocolo e conexão


Autenticação


Timeouts


Pool de conexões

somente database/sqlConnMaxIdleTime é uma configuração padrão do pool do Go database/sql. Ela não está disponível na struct clickhouse.Options nem via clickhouse.Open(). Defina-a após OpenDB():
Consulte Pool de conexões para mais detalhes de uso.

Configurações padrão do pool do database/sql

Ao usar clickhouse.OpenDB() ou sql.Open("clickhouse", dsn), o *sql.DB retornado é compatível com os métodos padrão de pool do Go. OpenDB() aplica automaticamente os três primeiros com base em Options:
ClickHouse API (clickhouse.Open)Esses métodos não estão disponíveis na conexão retornada por clickhouse.Open(). A ClickHouse API gerencia internamente seu próprio pool usando diretamente os campos da struct Options.

Compressão

Suporte a métodos de compressão por protocolo:

TLS

Consulte TLS para ver exemplos de código.

Logging

Consulte Logging para ver exemplos completos.

Buffers e memória


Específico para HTTP

Ignorado silenciosamente no NativeEssas opções afetam apenas Protocol: clickhouse.HTTP. Elas são ignoradas silenciosamente ao usar o protocolo Native, sem emitir nenhum erro ou aviso.
Pooling HTTP em duas camadasAo usar HTTP, há dois pools de conexões:
  • Camada 1 (aplicação): MaxIdleConns / MaxOpenConns — controla objetos httpConnect
  • Camada 2 (transporte): HttpMaxConnsPerHost — controla as conexões TCP subjacentes
O protocolo Native tem um mapeamento 1:1 simples e ignora HttpMaxConnsPerHost.

Conexão avançada


Informações do cliente


Configurações do servidor ClickHouse

Configurações comuns:

Opções de consulta no nível do contexto

Configure por consulta com clickhouse.Context():
Comportamento do tempo limite do contextoSe o contexto tiver um tempo limite > 1s, max_execution_time será definido automaticamente como seconds_remaining + 5. Isso substitui qualquer valor definido manualmente.

Opções de lote

Passadas para PrepareBatch(). Import: github.com/ClickHouse/clickhouse-go/v2/lib/driver.

Tabelas de referência rápida

Recomendações de dimensionamento do pool de conexões

Recomendações de timeout

Referência rápida dos parâmetros de DSN


Solução de problemas

Pool de conexões esgotado: “acquire conn timeout”

Causa: Pool de conexões esgotado — todas as conexões de MaxOpenConns estão em uso, e nenhuma foi liberada dentro de DialTimeout. Correção Tente as etapas a seguir em ordem e identifique a causa raiz antes de ajustar os parâmetros:
  1. Verifique se há consultas de longa execução mantendo conexões ocupadas: SELECT query_id, elapsed FROM system.processes ORDER BY elapsed DESC. Se encontrar alguma, resolva primeiro as consultas lentas.
  2. Se você executa lotes de longa duração (minutos/horas entre PrepareBatch() e Send()), use WithReleaseConnection() para devolver a conexão ao pool enquanto o lote estiver aberto.
  3. Aumente MaxOpenConns para acompanhar a concorrência observada.
  4. Aumente DialTimeout apenas se forem esperados picos de uso e a espera para adquirir conexão for o verdadeiro gargalo.

Timeout de leitura e erros de redefinição de conexão

Causa: ReadTimeout foi excedido enquanto se aguardava uma resposta do servidor, ou a conexão foi fechada pelo servidor/rede. Correção:
  • Aumente o ReadTimeout para consultas de longa duração
  • Use prazos de contexto para controlar o timeout por consulta
  • Verifique os limites de max_execution_time no lado do servidor do ClickHouse

”Code: 516. Falha na autenticação”

Causa: Nome de usuário ou senha incorretos, ou o usuário não existe. Correção:
  • Verifique as credenciais na tabela system.users
  • Verifique se há problemas de codificação de URL com caracteres especiais nas senhas do DSN
  • Confirme se o usuário tem acesso ao banco de dados especificado

Erros de certificado TLS

Aumento gradual do uso de memória

Causa: Acúmulo de buffers grandes em conexões ociosas. Correção:
  • Defina FreeBufOnConnRelease: true em ambientes com memória limitada
  • Reduza MaxIdleConns para limitar o número de conexões ociosas
  • Reduza MaxCompressionBuffer se estiver usando compressão
  • Diminua ConnMaxLifetime para reciclar as conexões com mais frequência
Última modificação em 10 de junho de 2026