SELECT 및 INSERT 쿼리를 실행할 수 있습니다.
테이블 생성하기
- 컬럼 이름은 원본 MySQL 테이블과 같아야 하지만, 그중 일부만 어떤 순서로든 사용할 수 있습니다.
- 컬럼 타입은 원본 MySQL 테이블의 타입과 달라도 됩니다. ClickHouse는 값을 ClickHouse 데이터 타입으로 형 변환하려고 시도합니다.
- external_table_functions_use_nulls 설정은 널 허용 컬럼을 처리하는 방식을 정의합니다. 기본값은 1입니다. 값이 0이면 테이블 함수는 널 허용 컬럼을 만들지 않고 null 대신 기본값을 삽입합니다. 이는 배열 내부의 NULL 값에도 적용됩니다.
host:port— MySQL 서버 주소입니다.database— 원격 데이터베이스 이름입니다.table— 원격 테이블 이름 또는 MySQL에 그대로 전달되는 쿼리입니다(테이블 이름 대신 쿼리 전달하기 참조).user— MySQL 사용자입니다.password— 사용자 비밀번호입니다.replace_query—INSERT INTO쿼리를REPLACE INTO로 변환하는 플래그입니다.replace_query=1이면 해당 쿼리로 대체됩니다.on_duplicate_clause—INSERT쿼리에 추가되는ON DUPLICATE KEY on_duplicate_clause표현식입니다. 예시:INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1에서on_duplicate_clause는UPDATE c2 = c2 + 1입니다.ON DUPLICATE KEY절과 함께 사용할 수 있는on_duplicate_clause는 MySQL 문서를 참조하십시오.on_duplicate_clause를 지정하려면replace_query매개변수에0을 전달해야 합니다.replace_query = 1과on_duplicate_clause를 동시에 전달하면 ClickHouse에서 예외가 발생합니다.
host와 port는 별도로 지정해야 합니다. 이 방식은 프로덕션 환경에 권장됩니다.
=, !=, >, >=, <, <=와 같은 단순한 WHERE 절은 MySQL 서버에서 실행됩니다.
나머지 조건과 LIMIT 샘플링 제약은 MySQL 쿼리가 완료된 후에만 ClickHouse에서 실행됩니다.
테이블 이름 대신 쿼리 전달하기
table 인수에 MySQL로 그대로 전달되는 SELECT 쿼리를 사용할 수 있습니다. 테이블의 구조는 쿼리 결과를 바탕으로 추론됩니다. 쿼리는 서브쿼리로 작성하거나 query 함수로 감싸 작성할 수 있습니다:
INSERT하는 것은 허용되지 않습니다. 동일한 구문은 mysql 테이블 함수에서도 지원됩니다.
서브쿼리 형식
(SELECT ...)은 ClickHouse에서 파싱된 후 서버로 전송되기 전에 MySQL 방언(백틱으로 식별자 인용)으로 다시 직렬화됩니다. 따라서 유효한 ClickHouse SQL이어야 합니다. ClickHouse가 파싱하지 않는 MySQL 전용 구문을 전달하려면 텍스트가 MySQL로 그대로 전송되는 query('...') 형식을 사용하십시오.전달된 쿼리에는 이를 둘러싼 ClickHouse 쿼리의 외부 WHERE, LIMIT, 집계 등이 푸시 다운되지 않습니다. 대신 전체 쿼리 결과를 가져온 후 ClickHouse에서 적용됩니다. MySQL에서 읽는 데이터를 제한하려면 필터를 전달된 쿼리 내부에 넣으십시오. external_table_strict_query = 1을 사용하면 푸시 다운할 수 없는 외부 필터는 로컬에서 적용되지 않고 예외와 함께 거부됩니다.|로 구분해 나열해야 합니다. 예를 들면 다음과 같습니다.
사용 예시
설정
connection_auto_close
- 1 — 연결 자동 닫기가 허용되며, 연결 재사용이 비활성화됩니다
- 0 — 연결 자동 닫기가 허용되지 않으며, 연결 재사용이 활성화됩니다
1.
connection_max_tries
- 양의 정수
- 0 — 페일오버를 지원하는 풀에 대해 재시도하지 않습니다.
3.
connection_pool_size
- 양의 정수.
16.
connection_wait_timeout
connection_pool_size개의 연결이 활성 상태인 경우). 0이면 대기하지 않습니다.
Possible values:
- 양의 정수.
5.
connect_timeout
- 양의 정수.
10.
read_write_timeout
- 양의 정수.
300.
enable_compression
false.
이 설정은 다음에 적용됩니다.
MySQL테이블 엔진;MySQL데이터베이스 엔진;mysql테이블 함수;- MySQL 통합에 사용되는 이름이 지정된 컬렉션.