clickhouse-go v2.x에서 구성 가능한 모든 옵션을 문서화합니다. 코드 예제가 포함된 가이드는 구성을 참조하십시오.
버전 어노테이션
clickhouse-go v2.35.0 이상에서 추가된 옵션은 설명 옆에 *(Since vX.Y.Z)*로 표시됩니다. “Since” 태그가 없는 옵션은 v2.0부터 사용할 수 있었으며, 지원되는 모든 릴리스에 포함됩니다.옵션 설정 방법
범위가 겹치면 더 구체적인 범위가 우선합니다: 배치 > Query > Connection.
Settings의 경우, 쿼리 수준 키는 연결 수준 키와 머지되며 충돌 시 쿼리 수준 설정이 우선합니다.
Options 구조체를 사용하는 방법:
연결 옵션
프로토콜 및 연결
인증
타임아웃
연결 풀
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 전용
2계층 HTTP 연결 풀HTTP를 사용할 때는 연결 풀이 두 계층으로 나뉩니다:
- 1계층(애플리케이션):
MaxIdleConns/MaxOpenConns—httpConnect객체를 제어합니다 - 2계층(전송):
HttpMaxConnsPerHost— 기본 TCP 연결을 제어합니다
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 내에 사용 가능한 연결이 확보되지 않았습니다.
해결 방법
다음 단계를 순서대로 시도하고, 설정값을 조정하기 전에 근본 원인을 먼저 진단하십시오:
- 연결을 점유한 채 오래 실행 중인 쿼리가 있는지 확인하십시오:
SELECT query_id, elapsed FROM system.processes ORDER BY elapsed DESC. 발견되면 먼저 느린 쿼리를 해결하십시오. - 오래 유지되는 배치(
PrepareBatch()와Send()사이가 몇 분 또는 몇 시간인 경우)를 실행한다면,WithReleaseConnection()을 사용해 배치가 열려 있는 동안 연결을 풀에 반환하십시오. - 관찰된 동시성에 맞게
MaxOpenConns를 늘리십시오. - 순간적인 부하 증가가 예상되고 연결 획득 대기가 실제 병목인 경우에만
DialTimeout을 늘리십시오.
읽기 timeout 및 연결 재설정 오류
ReadTimeout을 초과했거나, 서버 또는 네트워크에서 연결이 종료되었습니다.
해결 방법:
- 장시간 실행되는 쿼리의 경우
ReadTimeout값을 늘리세요 - 쿼리별 timeout 제어를 위해 Context deadline을 사용하세요
- ClickHouse 서버 측
max_execution_time제한을 확인하세요
”Code: 516. 인증 실패”
system.users테이블에서 자격 증명을 확인하세요- DSN 비밀번호의 특수 문자에 URL 인코딩 문제가 없는지 확인하세요
- 사용자에게 지정된 데이터베이스에 대한 접근 권한이 있는지 확인하세요
TLS 인증서 오류
점진적인 메모리 증가
- 메모리가 제한된 환경에서는
FreeBufOnConnRelease: true로 설정하세요 - 유휴 연결 수를 제한하려면
MaxIdleConns를 줄이세요 - Compression을 사용하는 경우
MaxCompressionBuffer를 줄이세요 - 연결이 더 자주 재생성되도록
ConnMaxLifetime을 낮추세요