メインコンテンツへスキップ

接続設定

各オプションの詳細な説明、デフォルト値、DSN パラメータ、ベストプラクティス、トラブルシューティングについては、Configuration Reference を参照してください。
接続を開く際は、Options 構造体を使用してクライアントの動作を制御できます。利用可能な設定は次のとおりです。
完全なサンプル

TLS

低レベルでは、すべてのクライアント接続メソッド (DSN/OpenDB/Open) で、安全な接続を確立するために Go tls package が使用されます。Options 構造体に non-nil の tls.Config ポインターが含まれている場合、クライアントは TLS を使用することを認識します。
完全なサンプル 通常、この最小限の TLS.Config で ClickHouse サーバーのセキュアなネイティブポート (通常は 9440) に接続するには十分です。ClickHouse サーバーに有効な証明書 (有効期限切れ、ホスト名の不一致、公開されている信頼済みルート認証局による署名がない、など) がない場合は、InsecureSkipVerifytrue にすることもできますが、これは強く非推奨です。
完全な例 追加のTLSパラメータが必要な場合は、アプリケーションコードで tls.Config 構造体の必要なフィールドを設定する必要があります。これには、特定の暗号スイートの指定、特定のTLSバージョン (1.2 や 1.3 など) の強制、内部CA証明書チェーンの追加、ClickHouse サーバー で必要な場合のクライアント証明書 (および秘密鍵) の追加、さらに高度なセキュリティ構成で利用されるその他の大半のオプションが含まれます。

認証

接続情報でユーザー名とパスワードを指定するには、Auth 構造体を指定します。
完全なサンプル

複数のノードへの接続

複数のアドレスは、Addr 構造体で指定できます。
完全な例 利用可能な接続戦略は 3 つあります。
  • ConnOpenInOrder (デフォルト) - アドレスは定義された順に使用されます。リストの前方にあるアドレスで接続に失敗した場合にのみ、後続のアドレスが使われます。実質的にはフェイルオーバー戦略です。
  • ConnOpenRoundRobin - ラウンドロビン戦略によって、各アドレスに負荷が分散されます。
  • ConnOpenRandom - アドレスのリストからノードがランダムに選択されます。
これは ConnOpenStrategy オプションで制御できます
完全な例

接続プーリング

クライアントは接続プールを維持し、必要に応じてクエリ間で接続を再利用します。同時に使用される接続数の上限は MaxOpenConns で、プールに保持するアイドル接続数の上限は MaxIdleConns で制御されます。クライアントはクエリを実行するたびにプールから接続を取得し、再利用できるよう実行後にプールへ返します。接続はバッチの存続期間中使用され、Send() で解放されます。 ユーザーが MaxOpenConns=1 を設定しない限り、プール内の同じ接続が後続のクエリでも使われる保証はありません。これが必要になるケースはまれですが、一時テーブルを使用する場合には必要になることがあります。 また、ConnMaxLifetime のデフォルト値は 1 時間である点にも注意してください。そのため、ノードがクラスターから離脱すると、ClickHouse への負荷が不均衡になる場合があります。これは、あるノードが利用できなくなると、接続が他のノードに振り分けられるためです。問題のあるノードがクラスターに復帰しても、これらの接続は維持され、デフォルトでは 1 時間更新されません。ワークロードが高い場合は、この値を小さくすることを検討してください。 接続プーリングは、Native (TCP) と HTTP プロトコルの両方で有効です。

ログ

クライアントは、OptionsLogger フィールドを使用して、Go 標準の log/slog パッケージによる構造化ログをサポートしています。従来の Debug フィールドと Debugf フィールドは非推奨ですが、後方互換性のため引き続き利用できます (優先順位: Debugf > Logger > no-op) 。
ロガーにアプリケーションレベルのコンテキストを追加することもできます:
完全なサンプル

圧縮

圧縮方式のサポートは、使用する基盤プロトコルに依存します。ネイティブプロトコルでは、クライアントは LZ4ZSTD の圧縮をサポートしています。これはブロック単位でのみ行われます。圧縮を有効にするには、接続に Compression 設定を含めます。
完全な例 HTTPトランスポートを使用する場合は、gzipdeflatebr といった追加の圧縮方式も利用できます。詳しくは、Database/SQL API - Compression を参照してください。

TCP と HTTP

トランスポートは config の切り替えひとつで指定でき、このガイドのそれ以外の内容は両方に共通して適用されます。違いは次のとおりです。 いずれかの API を HTTP に切り替えるには:
最終更新日 2026年6月10日