Passer au contenu principal
Cette page répertorie toutes les options configurables de clickhouse-go v2.x. Pour un guide avec des exemples de code, consultez Configuration.
Annotations de versionLes options ajoutées dans clickhouse-go v2.35.0 ou une version ultérieure sont indiquées par (Depuis vX.Y.Z) à côté de leur description. Les options sans balise « Depuis » sont disponibles depuis la v2.0 et sont présentes dans toutes les versions prises en charge.

Définition des options

Les options existent à trois niveaux : Lorsque plusieurs portées se chevauchent, la plus spécifique l’emporte : Batch > Requête > Connexion. Pour Settings, les clés au niveau de la requête sont fusionnées avec celles au niveau de la connexion, et celles de la requête l’emportent en cas de conflit. Via la struct Options :
À l’aide d’une chaîne DSN :
Par le connecteur (database/sql avec la structure Options) :
Via le contexte (par requête) :

Options de connexion

Protocole et connexion


Authentification


Délais d’expiration

Un service ClickHouse Cloud resté inactif est mis en pause et se réveille lors de la première connexion entrante. Le réveil prend généralement quelques dizaines de secondes, pendant lesquelles la tentative de connexion reste bloquée. Si DialTimeout est inférieur au temps de réveil, la première requête après une période d’inactivité échoue sur un délai d’expiration de connexion au lieu de s’exécuter.Définissez DialTimeout sur 1m2m pour les clients susceptibles d’être les premiers à atteindre un service mis en pause après une période d’inactivité. L’inconvénient est une détection plus lente des pannes réelles — les tentatives de connexion restent bloquées pendant toute la durée du délai avant de renvoyer une erreur — il est donc préférable de réserver ce délai plus élevé à la première connexion, ou d’utiliser des dates limites de contexte sur les requêtes individuelles afin de plafonner la latence de bout en bout.

Pool de connexions

database/sql uniquementConnMaxIdleTime est un paramètre standard du pool Go database/sql. Il n’est pas disponible dans la struct clickhouse.Options ni via clickhouse.Open(). Définissez-le après OpenDB() :
Voir le pool de connexions pour plus de détails sur l’utilisation.

Paramètres standard du pool database/sql

Lorsque vous utilisez clickhouse.OpenDB() ou sql.Open("clickhouse", dsn), le *sql.DB renvoyé prend en charge les méthodes standard de gestion du pool de Go. OpenDB() applique automatiquement les trois premières à partir de Options :
ClickHouse API (clickhouse.Open)Ces méthodes ne sont pas disponibles sur la connection renvoyée par clickhouse.Open(). La ClickHouse API gère son propre pool en interne en utilisant directement les champs de la struct Options.

Compression

Prise en charge des méthodes de compression par protocole :

TLS

Voir TLS pour des exemples de code.

Journalisation

Consultez Journalisation pour voir des exemples complets.

Tampons et mémoire


Spécifique à HTTP

Ignoré silencieusement avec NativeCes options n’affectent que Protocol: clickhouse.HTTP. Elles sont silencieusement ignorées lors de l’utilisation du protocole Native, sans émettre d’erreur ni d’avertissement.
Pool de connexions HTTP à deux couchesLors de l’utilisation de HTTP, il existe deux pools de connexions :
  • Couche 1 (application) : MaxIdleConns / MaxOpenConns — contrôle les objets httpConnect
  • Couche 2 (transport) : HttpMaxConnsPerHost — contrôle les connexions TCP sous-jacentes
Le protocole Native utilise un mappage simple 1:1 et ignore HttpMaxConnsPerHost.

Connexion avancée


Informations sur le client


Paramètres du serveur ClickHouse

Paramètres courants :

Options de requête au niveau du contexte

Définissez-les pour chaque requête à l’aide de clickhouse.Context() :
Comportement de la date limite du contexteSi le contexte a une date limite > 1s, max_execution_time est automatiquement fixé à seconds_remaining + 5. Cela remplace toute valeur définie manuellement.

Options de batch

Passées à PrepareBatch(). Import : github.com/ClickHouse/clickhouse-go/v2/lib/driver.

Tableaux récapitulatifs

Recommandations de dimensionnement du pool de connexions

Recommandations relatives aux timeouts

Référence rapide des paramètres DSN


Dépannage

Pool de connexions épuisé : “acquire conn timeout”

Cause : Pool de connexions épuisé : toutes les connexions MaxOpenConns sont utilisées et aucune n’est redevenue disponible avant l’expiration de DialTimeout. Correctif Essayez les étapes suivantes dans l’ordre et identifiez la cause sous-jacente avant d’ajuster les paramètres :
  1. Vérifiez si des requêtes longues monopolisent des connexions : SELECT query_id, elapsed FROM system.processes ORDER BY elapsed DESC. Si c’est le cas, commencez par corriger les requêtes lentes.
  2. Si vous exécutez des batchs de longue durée (minutes/heures entre PrepareBatch() et Send()), utilisez WithReleaseConnection() pour libérer la connexion et la remettre dans le pool pendant que le batch reste ouvert.
  3. Augmentez MaxOpenConns pour l’aligner sur la concurrence observée.
  4. Augmentez DialTimeout uniquement si des pics de charge sont attendus et que le temps d’attente pour obtenir une connexion est le véritable goulot d’étranglement.

Erreurs de délai de lecture et de réinitialisation de connexion

Cause : ReadTimeout a été dépassé pendant l’attente d’une réponse du serveur, ou la connexion a été fermée par le serveur ou le réseau. Correctif :
  • Augmentez ReadTimeout pour les requêtes de longue durée
  • Utilisez des délais d’expiration du contexte pour contrôler le timeout de chaque requête
  • Vérifiez les limites max_execution_time côté serveur dans ClickHouse

”Code: 516. Authentication failed”

Cause : Nom d’utilisateur ou mot de passe incorrect, ou utilisateur inexistant. Solution :
  • Vérifiez les identifiants dans la table system.users
  • Vérifiez qu’il n’y a pas de problème d’encodage d’URL des caractères spéciaux dans les mots de passe du DSN
  • Confirmez que l’utilisateur a accès à la base de données spécifiée

Erreurs de certificat TLS

Augmentation progressive de la mémoire

Cause : accumulation de buffers de connexions inactives de grande taille. Correctif :
  • Définissez FreeBufOnConnRelease: true dans les environnements à mémoire limitée
  • Réduisez MaxIdleConns pour limiter le nombre de connexions inactives
  • Réduisez MaxCompressionBuffer si vous utilisez la compression
  • Réduisez ConnMaxLifetime pour recycler les connexions plus fréquemment
Dernière modification le 1 juillet 2026