메인 콘텐츠로 건너뛰기
이 페이지에서는 clickhouse-go v2.x에서 구성 가능한 모든 옵션을 문서화합니다. 코드 예제가 포함된 가이드는 구성을 참조하십시오.
버전 어노테이션clickhouse-go v2.35.0 이상에서 추가된 옵션은 설명 옆에 *(Since vX.Y.Z)*로 표시됩니다. “Since” 태그가 없는 옵션은 v2.0부터 사용할 수 있었으며, 지원되는 모든 릴리스에 포함됩니다.

옵션 설정 방법

옵션은 3개의 범위에서 설정할 수 있습니다: 범위가 겹치면 더 구체적인 범위가 우선합니다: 배치 > Query > Connection. Settings의 경우, 쿼리 수준 키는 연결 수준 키와 머지되며 충돌 시 쿼리 수준 설정이 우선합니다. Options 구조체를 사용하는 방법:
DSN 문자열 사용:
Connector 사용(database/sql의 Options 구조체 사용):
Context를 통해(쿼리별):

연결 옵션

프로토콜 및 연결


인증


타임아웃

유휴 상태였던 ClickHouse Cloud 서비스는 일시 중지되며, 첫 번째 인바운드 연결이 들어오면 다시 깨어납니다. 일반적으로 다시 깨어나는 데는 수십 초가 걸리며, 이 동안 dial이 차단됩니다. DialTimeout이 다시 깨어나는 시간보다 짧으면 유휴 기간 이후 첫 번째 쿼리는 실행되지 않고 dial timeout으로 실패합니다.유휴 상태인 서비스에 가장 먼저 연결할 수 있는 클라이언트의 경우 DialTimeout1m2m로 설정하십시오. 그 대신 실제 장애 상황에서는 실패 감지가 더 느려집니다. 즉, 오류를 반환하기 전까지 dial이 전체 타임아웃 동안 차단됩니다. 따라서 더 높은 타임아웃은 첫 연결에만 적용하거나, 개별 쿼리에 context deadline을 사용해 종단 간 지연 시간을 제한하는 방식을 권장합니다.

연결 풀

database/sql 전용ConnMaxIdleTime은 표준 Go database/sql 연결 풀 설정입니다. clickhouse.Options 구조체 또는 clickhouse.Open()에서는 사용할 수 없습니다. OpenDB() 후 설정하십시오:
사용 세부 정보는 연결 풀링을 참조하십시오.

표준 database/sql 풀 설정

clickhouse.OpenDB() 또는 sql.Open("clickhouse", dsn)를 사용하면 반환되는 *sql.DB에서 Go의 표준 풀 메서드를 사용할 수 있습니다. OpenDB()Options의 처음 세 가지 항목을 자동으로 적용합니다.
ClickHouse API (clickhouse.Open)이 메서드들은 clickhouse.Open()이 반환하는 연결에서는 사용할 수 없습니다. ClickHouse API는 Options 구조체의 필드를 직접 사용해 내부적으로 자체 풀을 관리합니다.

압축

프로토콜별 압축 메서드 지원:

TLS

코드 예시는 TLS를 참조하십시오.

로깅

로깅에서 전체 예시를 확인하십시오.

버퍼와 메모리


HTTP 전용

Native에서는 조용히 무시됩니다이 옵션은 Protocol: clickhouse.HTTP에만 영향을 줍니다. 네이티브 프로토콜을 사용할 때는 조용히 무시되며, 오류나 경고도 발생하지 않습니다.
2계층 HTTP 연결 풀HTTP를 사용할 때는 연결 풀이 두 계층으로 나뉩니다:
  • 1계층(애플리케이션): MaxIdleConns / MaxOpenConnshttpConnect 객체를 제어합니다
  • 2계층(전송): HttpMaxConnsPerHost — 기본 TCP 연결을 제어합니다
네이티브 프로토콜은 단순한 1:1 매핑을 사용하며 HttpMaxConnsPerHost를 무시합니다.

고급 연결


클라이언트 정보


ClickHouse 서버 설정

공통 설정:

Context 수준의 쿼리 옵션

clickhouse.Context()를 사용하여 쿼리별로 설정합니다:
Context 데드라인 동작Context에 데드라인이 있고 그 값이 1초를 초과하면 max_execution_time이 자동으로 seconds_remaining + 5로 설정됩니다. 수동으로 설정한 값은 모두 재정의됩니다.

배치 옵션

PrepareBatch()에 전달됩니다. Import: github.com/ClickHouse/clickhouse-go/v2/lib/driver.

빠른 참고용 표

연결 풀 크기 권장 사항

Timeout 권장값

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을 늘리십시오.

읽기 timeout 및 연결 재설정 오류

원인: 서버 응답을 기다리는 동안 ReadTimeout을 초과했거나, 서버 또는 네트워크에서 연결이 종료되었습니다. 해결 방법:
  • 장시간 실행되는 쿼리의 경우 ReadTimeout 값을 늘리세요
  • 쿼리별 timeout 제어를 위해 Context deadline을 사용하세요
  • ClickHouse 서버 측 max_execution_time 제한을 확인하세요

”Code: 516. 인증 실패”

원인: 사용자 이름 또는 비밀번호가 잘못되었거나, 사용자가 존재하지 않습니다. 해결 방법:
  • system.users 테이블에서 자격 증명을 확인하세요
  • DSN 비밀번호의 특수 문자에 URL 인코딩 문제가 없는지 확인하세요
  • 사용자에게 지정된 데이터베이스에 대한 접근 권한이 있는지 확인하세요

TLS 인증서 오류

점진적인 메모리 증가

원인: 큰 유휴 연결 버퍼가 누적됩니다. 해결 방법:
  • 메모리가 제한된 환경에서는 FreeBufOnConnRelease: true로 설정하세요
  • 유휴 연결 수를 제한하려면 MaxIdleConns를 줄이세요
  • Compression을 사용하는 경우 MaxCompressionBuffer를 줄이세요
  • 연결이 더 자주 재생성되도록 ConnMaxLifetime을 낮추세요
마지막 수정일 2026년 7월 2일