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
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 :
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 1m–2m 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 uniquement
ConnMaxIdleTime 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() :Paramètres standard du pool database/sql
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
Tampons et mémoire
Spécifique à HTTP
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 objetshttpConnect - Couche 2 (transport) :
HttpMaxConnsPerHost— contrôle les connexions TCP sous-jacentes
HttpMaxConnsPerHost.Connexion avancée
Informations sur le client
Paramètres du serveur ClickHouse
Paramètres courants :
Options de requête au niveau du contexte
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
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”
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 :
- 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. - Si vous exécutez des batchs de longue durée (minutes/heures entre
PrepareBatch()etSend()), utilisezWithReleaseConnection()pour libérer la connexion et la remettre dans le pool pendant que le batch reste ouvert. - Augmentez
MaxOpenConnspour l’aligner sur la concurrence observée. - Augmentez
DialTimeoutuniquement 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
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
ReadTimeoutpour 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_timecôté serveur dans ClickHouse
”Code: 516. Authentication failed”
- 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
- Définissez
FreeBufOnConnRelease: truedans les environnements à mémoire limitée - Réduisez
MaxIdleConnspour limiter le nombre de connexions inactives - Réduisez
MaxCompressionBuffersi vous utilisez la compression - Réduisez
ConnMaxLifetimepour recycler les connexions plus fréquemment