メインコンテンツへスキップ
このページでは、clickhouse-go v2.x で設定可能なすべてのオプションを説明します。コード例を含むガイドについては、設定 を参照してください。
バージョン注記clickhouse-go v2.35.0 以降で追加されたオプションには、説明の横に (Since vX.Y.Z) と記されています。“Since” タグのないオプションは v2.0 以降すべてのサポート対象リリースで利用できます。

オプションの設定方法

オプションは、次の 3 つのスコープで設定できます。 スコープが重複する場合は、より具体的なスコープが優先されます: バッチ > クエリ > 接続Settings については、クエリレベルのキーが接続レベルのキーとマージされ、競合した場合はクエリレベルのキーが優先されます。 Options 構造体を使用する場合:
DSN文字列を使用する場合:
コネクタ経由 (Options 構造体を使用する database/sql) :
コンテキスト経由 (クエリ単位) :

接続オプション

プロトコルと接続


認証


タイムアウト

アイドル状態だった ClickHouse Cloud サービスは一時停止され、最初の受信接続で起動します。起動には通常数十秒かかり、その間は接続試行がブロックされます。DialTimeout が起動時間より短いと、アイドル期間後の最初のクエリは実行されず、接続タイムアウトで失敗します。アイドル状態のサービスに最初に到達する可能性がある client では、DialTimeout1m2m に設定してください。その代償として、実際の障害時の失敗検出は遅くなります。つまり、エラーになるまで接続試行がタイムアウトいっぱいまでブロックされます。そのため、高めのタイムアウトは最初の接続だけに適用するか、個々のクエリでコンテキストのデッドラインを使ってエンドツーエンドのレイテンシを抑えることを推奨します。

接続プール

database/sql のみConnMaxIdleTime は標準の Go database/sql の接続プール設定です。clickhouse.Options 構造体や clickhouse.Open() からは利用できません。OpenDB() の後に設定してください。
使用方法の詳細は 接続プーリング を参照してください。

標準の database/sql プール設定

clickhouse.OpenDB() または sql.Open("clickhouse", dsn) を使用すると、返される *sql.DB では Go の標準的なプールメソッドを利用できます。OpenDB()Options の最初の 3 つを自動で適用します。
ClickHouse API (clickhouse.Open)これらのメソッドは、clickhouse.Open() が返す接続では使用できません。ClickHouse API は Options 構造体のフィールドを直接使い、内部で独自にプールを管理します。

圧縮

プロトコルごとの圧縮方式サポート:

TLS

コード例については TLS を参照してください。

ロギング

完全な例については、ロギングを参照してください。

バッファとメモリ


HTTP固有

Native では暗黙的に無視されますこれらのオプションは Protocol: clickhouse.HTTP にのみ影響します。ネイティブプロトコルの使用時は暗黙的に無視され、エラーや警告は出力されません。
HTTP の 2 層接続プールHTTP を使用する場合、接続プールは 2 つあります。
  • 第 1 層 (アプリケーション) : MaxIdleConns / MaxOpenConnshttpConnect オブジェクトを制御します
  • 第 2 層 (トランスポート) : HttpMaxConnsPerHost — 基盤となる TCP 接続を制御します
ネイティブプロトコルは単純な 1:1 の対応となるため、HttpMaxConnsPerHost は無視されます。

高度な接続


クライアント情報


ClickHouse サーバー設定

一般的な設定:

Context レベルのクエリオプション

各クエリに対して clickhouse.Context() を使って設定します。
コンテキストのデッドラインの挙動コンテキストのデッドラインが > 1 秒の場合、max_execution_time は自動的に seconds_remaining + 5 に設定されます。手動で設定した値は上書きされます。

バッチオプション

PrepareBatch() に渡すオプションです。インポート: github.com/ClickHouse/clickhouse-go/v2/lib/driver.

早見表

接続プールのサイズ設定の推奨値

タイムアウトの推奨値

DSN パラメータ早見表


トラブルシューティング

接続プールの枯渇: “acquire conn timeout”

原因: 接続プールが枯渇しています。MaxOpenConns で許可されたすべての接続が使用中で、DialTimeout 内に空きが出ませんでした。 対処方法 次の手順を順番に試し、調整項目を変更する前に根本原因を切り分けてください。
  1. 接続を占有している長時間実行中のクエリがないか確認します: SELECT query_id, elapsed FROM system.processes ORDER BY elapsed DESC。見つかった場合は、まずその低速なクエリへの対処を優先してください。
  2. 長時間存続するバッチ (PrepareBatch() から Send() までが数分~数時間) を実行している場合は、WithReleaseConnection() を使用して、バッチを開いたままでも接続をプールに戻してください。
  3. 実際に観測された同時実行数に合わせて MaxOpenConns を増やします。
  4. バーストが想定され、接続取得の待ち時間が実際のボトルネックである場合にのみ、DialTimeout を増やします。

読み取りタイムアウトおよび接続リセットエラー

原因: サーバーからの応答を待っている間に ReadTimeout を超過したか、サーバーまたはネットワークによって connection が切断されました。 対処法:
  • 長時間実行されるクエリでは ReadTimeout を増やします
  • クエリごとの timeout 制御には context の deadline を使用します
  • ClickHouse のサーバー側 max_execution_time 制限を確認します

”Code: 516. 認証に失敗しました”

原因: username または password が誤っているか、ユーザーが存在しません。 対処:
  • system.users table で認証情報を確認する
  • DSN の password に含まれる特殊文字の URL エンコードに問題がないか確認する
  • ユーザーに、指定した database へのアクセス権があることを確認する

TLS 証明書エラー

徐々に増えるメモリ使用量

原因: 大きなアイドル状態の接続バッファが蓄積している。 対処:
  • メモリが限られる環境では FreeBufOnConnRelease: true を設定する
  • アイドル接続を制限するために MaxIdleConns を減らす
  • 圧縮を使用している場合は MaxCompressionBuffer を減らす
  • 接続をより頻繁に入れ替えるために ConnMaxLifetime を短くする
最終更新日 2026年7月1日