유형 변환 모드
이 페이지의 내용
버전 2.6에 새로 추가됨
BI 용 MongoDB Connector는 SQL 쿼리를 MongoDB 집계 파이프라인 으로 변환하려고 시도합니다. BI Connector 가 쿼리 를 집계 파이프라인 으로 변환할 수 없는 경우 메모리에서 쿼리 를 실행하여 지연 시간 이 증가합니다. 버전 2.6 이전에는 mongosqld
에서 유형 변환을 집계 표현식으로 변환할 수 없어 유형 변환에 의존하는 쿼리 를 변환할 수 없었습니다.
버전 2.6부터 mongosql
유형 변환 모드는 표현식 성능을 개선하기 위해 버전 4.0 이상을 실행하는 MongoDB Server로 모든 유형 변환을 푸시합니다. 이 모드는 기본적으로 활성화되어 있지만 type_conversion_mode
세션 변수를 다음 값 중 하나로 설정하여 세션별로 구성할 수 있습니다.
모드 | 설명 |
---|---|
mongosql | 기본값. 모든 유형 변환을 버전 4.0 이상을 실행하는 MongoDB Server로 푸시합니다. 4.0 이전 버전의 MongoDB의 경우 BI Connector는 메모리에서 유형 변환을 수행합니다. |
mysql | MySQL의 유형 변환 의미 체계와 최대한 일치하도록 BI Connector에 지시합니다. BI Connector가 애그리게이션 언어에서 MySQL의 유형 캐스팅 동작을 재현할 수 있는 경우, 표현식을 실행을 위해 MongoDB 서버로 푸시합니다. 그렇지 않으면 mongosqld 가 메모리에서 표현식을 실행합니다. |
다음 예에서는 type_conversion_mode
변수를 mysql
로 설정합니다.
SET SESSION type_conversion_mode = 'mysql';
중요
mongosql
는 MySQL의 동작을 모방해야 하는 경우를 제외하고는 권장되는 타입 캐스팅 모드입니다. 위의 예에서는 mongosql
이 기본값이고 명시적으로 설정할 필요가 없기 때문에 mysql
유형 변환 모드를 설정합니다.
유형 변환 모드는 다음 두 가지 모두에 적용됩니다.
명시적 유형 변환. 예를 들면 다음과 같습니다.
CAST("123" AS unsigned) 암시적 유형 변환. 예를 들면 다음과 같습니다.
"123" + 456
모드 비교 표
다음 표는 MySQL의 유형 변환 동작이 BI Connector의 기본 유형 변환 동작(mongosql
모드)과 어떻게 다른지에 대한 개요를 제공합니다.
시작 유형 | 입력 대상 | MySQL 동작 | mongosql -mode 동작 |
---|---|---|---|
Varchar | 숫자 | 다양한 형식의 string 에서 숫자를 구문 분석합니다. 자세한 내용은 MySQL 숫자 리터럴 을 참조하세요. 문서화. | 선택적 선행 기호 문자를 사용하여 10진수 형식의 문자열에서 숫자를 구문 분석합니다. |
Varchar | 타임스탬프 | 다양한 형식의 string 에서 날짜를 구문 분석합니다. 자세한 내용은 MySQL 날짜 및 시간 리터럴 을 참조하세요. . | "%Y-%m-%dT%H:%M:%S.%LZ" 형식의 문자열에서 날짜를 구문 분석합니다. |
Int | 타임스탬프 | int의 varchar 표현에서 날짜를 구문 분석하려고 시도합니다. 예를 들어 정수 20180809183456 은 날짜 2018-08-09 18:34:56.000000 이 됩니다. | 유닉스 시간 이후의 입력을 밀리초로 처리합니다. 예를 들어 1533839696000 입니다. |
타임스탬프 | Long | 타임스탬프를 YYYYMMDDHHMMSS 형식의 long으로 구문 분석합니다. 예를 들어 20180701123400 입니다. | 유닉스 시간 이후의 밀리초를 나타내는 long으로 타임스탬프를 구문 분석합니다. 예를 들어 1530448440000 입니다. |
타임스탬프 | Varchar | 타임스탬프를 YYYY-MM-DD HH:MM:SS.MMMMMM 형식의 varchar로 구문 분석합니다. 예를 들어 “2018-07-01 12:34:00.000000” 입니다. | 타임스탬프를 YYYY-MM-DDTHH:MM:SS:MMMZ 형식의 varchar로 구문 분석합니다. 예를 들어 “2018-07-01T12:34:00.000Z” 입니다. |
참고
mongosql
는 MySQL의 동작을 가깝게 복제해야 하는 경우를 제외하고 권장되는 타입 캐스팅 모드입니다.