Saltar al contenido principal
Esta página documenta todas las opciones configurables de clickhouse-go v2.x. Para ver una guía con ejemplos de código, consulta Configuración.
Anotaciones de versiónLas opciones añadidas en clickhouse-go v2.35.0 o versiones posteriores están marcadas con (Desde vX.Y.Z) junto a su descripción. Las opciones sin la etiqueta “Desde” están disponibles desde la v2.0 y están presentes en todas las versiones compatibles.

Cómo se configuran las opciones

Las opciones existen en tres ámbitos: Cuando los ámbitos se superponen, prevalece el más específico: Lote > Consulta > Conexión. Para Settings, las claves del nivel de consulta se combinan con las del nivel de conexión y, en caso de conflicto, prevalecen las del nivel de consulta. Mediante la estructura Options:
Mediante una cadena DSN:
A través de Connector (database/sql con la estructura Options):
A través del contexto (por consulta):

Opciones de conexión

Protocolo y conexión


Autenticación


Tiempos de espera

Un servicio de ClickHouse Cloud que ha estado inactivo entra en pausa y se reactiva con la primera conexión entrante. La reactivación suele tardar unas pocas decenas de segundos, durante las cuales la conexión queda bloqueada. Si DialTimeout es menor que el tiempo de reactivación, la primera consulta después de un período de inactividad falla con un timeout de conexión en lugar de ejecutarse.Configure DialTimeout en 1m2m para los clients que puedan ser los primeros en llegar a un servicio inactivo. La contrapartida es una detección de fallos más lenta durante una caída real: los intentos de conexión quedan bloqueados durante todo el tiempo de espera antes de devolver un error, así que prefiera limitar el tiempo de espera más alto a la primera conexión, o use límites de tiempo del contexto en consultas individuales para acotar la latencia de extremo a extremo.

Pool de conexiones

Solo database/sqlConnMaxIdleTime es una configuración estándar del pool de Go database/sql. No está disponible en la estructura clickhouse.Options ni mediante clickhouse.Open(). Configúralo después de OpenDB():
Consulta Connection Pooling para ver los detalles de uso.

Configuración estándar del pool de database/sql

Al usar clickhouse.OpenDB() o sql.Open("clickhouse", dsn), el *sql.DB devuelto admite los métodos estándar de pool de Go. OpenDB() aplica automáticamente los tres primeros a partir de Options:
ClickHouse API (clickhouse.Open)Estos métodos no están disponibles en la conexión devuelta por clickhouse.Open(). La ClickHouse API gestiona su propio pool internamente usando directamente los campos de la estructura Options.

Compresión

Compatibilidad de métodos de compresión por protocolo:

TLS

Consulte TLS para ver ejemplos de código.

Registro

Consulta Logging para ver ejemplos completos.

Búferes y memoria


Específico de HTTP

Se ignora silenciosamente con NativeEstas opciones solo afectan a Protocol: clickhouse.HTTP. Se ignoran silenciosamente cuando se usa el protocolo Native y no se emite ningún error ni advertencia.
Pool HTTP de dos capasAl usar HTTP, hay dos pools de conexiones:
  • Capa 1 (aplicación): MaxIdleConns / MaxOpenConns — controla los objetos httpConnect
  • Capa 2 (transporte): HttpMaxConnsPerHost — controla las conexiones TCP subyacentes
El protocolo Native tiene una correspondencia simple 1:1 e ignora HttpMaxConnsPerHost.

Conexión avanzada


Información del cliente


Ajustes del servidor ClickHouse

Ajustes comunes:

Opciones de consulta a nivel de contexto

Configúrelas por consulta con clickhouse.Context():
Comportamiento del tiempo límite de contextoSi el contexto tiene un tiempo límite > 1 s, max_execution_time se establece automáticamente en seconds_remaining + 5. Esto anula cualquier valor establecido manualmente.

Opciones de lote

Se pasan a PrepareBatch(). Importación: github.com/ClickHouse/clickhouse-go/v2/lib/driver.

Tablas de consulta rápida

Recomendaciones para el dimensionamiento del pool de conexiones

Recomendaciones de timeout

Referencia rápida de los parámetros de DSN


Solución de problemas

Pool de conexiones agotado: “acquire conn timeout”

Causa: Se agotó el pool de conexiones: todas las conexiones de MaxOpenConns están en uso y ninguna se liberó dentro de DialTimeout. Solución Pruebe los siguientes pasos en orden y diagnostique la causa raíz antes de ajustar los parámetros:
  1. Compruebe si hay consultas de larga duración que mantienen conexiones ocupadas: SELECT query_id, elapsed FROM system.processes ORDER BY elapsed DESC. Si las encuentra, resuelva primero las consultas lentas.
  2. Si ejecuta lotes de larga duración (minutos/horas entre PrepareBatch() y Send()), use WithReleaseConnection() para devolver la conexión al pool mientras el lote permanece abierto.
  3. Aumente MaxOpenConns para ajustarlo a la concurrencia observada.
  4. Aumente DialTimeout solo si se esperan picos y la espera para adquirir una conexión es el verdadero cuello de botella.

Errores de tiempo de espera de lectura y restablecimiento de conexión

Causa: Se superó ReadTimeout mientras se esperaba una respuesta del servidor, o el servidor o la red cerraron la conexión. Solución:
  • Aumente ReadTimeout para consultas de larga duración
  • Use fechas límite de contexto para controlar el tiempo de espera de cada consulta
  • Compruebe los límites de max_execution_time en el servidor de ClickHouse

”Código: 516. Falló la autenticación”

Causa: Nombre de usuario o contraseña incorrectos, o el usuario no existe. Solución:
  • Verifique las credenciales en la tabla system.users
  • Compruebe si hay problemas de codificación de URL con caracteres especiales en las contraseñas del DSN
  • Confirme que el usuario tenga acceso a la base de datos especificada

Errores de certificado TLS

Aumento gradual de memoria

Causa: Acumulación de búferes grandes en conexiones inactivas. Solución:
  • Establece FreeBufOnConnRelease: true en entornos con memoria limitada
  • Reduce MaxIdleConns para limitar las conexiones inactivas
  • Reduce MaxCompressionBuffer si usas compresión
  • Reduce ConnMaxLifetime para reciclar las conexiones con más frecuencia
Última modificación el 25 de junio de 2026