Release 342
Release 342 (2020년 9월 24일)
Presto 342 릴리스예요. from_iso8601_timestamp_nanos() 함수, S3 암호화 파일 지원, Hive 타임스탬프 마이크로·나노초 정밀도, Iceberg 커넥터 수정 등이 담겼어요.
본문
General
from_iso8601_timestamp_nanos()함수를 추가했어요(#5048).DECIMAL타입을 사용하는 쿼리 성능을 개선했어요(#4886).- 동적 필터링 지원을 확장해 서브쿼리가 있는
IN이 포함된 쿼리 성능을 개선했어요(#5017). - 동적 필터를 활용하는 쿼리의 성능과 지연 시간을 개선했어요(#4988).
- 비용 기반 최적화(기본 활성화) 시 컬럼 통계가 없거나 불완전한 테이블을 조인하는 쿼리 성능을 개선했어요(#5141).
- 큰 테이블의 브로드캐스트 조인을 수행하는 쿼리의 지연 시간을 줄였어요(#5237).
enable-large-dynamic-filters설정 속성이나enable_large_dynamic_filters세션 속성으로 큰 build 쪽이 있는 조인에 대한 동적 필터 수집을 허용하게 됐어요(#5262).- 람다 표현식이 점(dot)을 포함한 테이블 컬럼을 참조할 때 쿼리가 실패하던 문제를 고쳤어요(#5087).
Atop 커넥터
- 쿼리에
start_time이나end_time컬럼에 대한 조건자가 포함됐을 때 잘못된 결과가 나오던 문제를 고쳤어요(#5125).
Elasticsearch 커넥터
- 문자열로 저장된 boolean 값을 읽을 수 있게 했어요(#5269).
Hive 커넥터
- S3 암호화 파일 지원을 추가했어요(#2536).
- ABFS OAuth 인증 지원을 추가했어요(#5052).
- 마이크로초·나노초 정밀도의 타임스탬프 읽기를 지원하게 됐어요.
hive.timestamp-precision설정 속성으로 활성화할 수 있어요(#4953). hive.insert-existing-partitions-behavior설정 속성으로 기본적으로 insert 시 덮어쓰기(overwrite)를 허용하게 됐어요(#4999).- 동적 필터링을 더 효율적으로 수행할 수 있을 때까지 테이블 스캔을 지연할 수 있게 했어요.
hive.dynamic-filtering-probe-blocking-timeout설정 속성이나dynamic_filtering_probe_blocking_timeout세션 속성으로 설정할 수 있어요(#4991). - HDFS에서 새 파일을 만들 때 테이블·파티션의 기존 사용자·그룹을 일치시키는 기능을 기본적으로 비활성화했어요. 이 기능은 341에서 추가됐는데 이제 기본적으로 꺼져 있어요.
hive.fs.new-file-inherit-ownership설정 속성으로 활성화할 수 있어요(#5187). - RCTEXT나 RCBINARY 형식의 작은 파일을 읽을 때 성능을 개선했어요(#2536).
- Glue 메타스토어를 쓸 때 파티션 컬럼에 대한 비등식(non-equality) 필터가 있는 쿼리의 계획 시간을 개선했어요(#5060).
- JSON과 CSV 파일 형식 읽기 성능을 개선했어요(#5142).
Iceberg 커넥터
- 1970년 이전 날짜에 대한 시간 컬럼의 파티션 변환 문제를 고쳤어요(#5273).
Kafka 커넥터
- 메시지 헤더를
MAP(VARCHAR, ARRAY(VARBINARY))타입의_headers컬럼으로 노출했어요(#4462). - JSON 인코더를 쓸 때 Kafka 커넥터의
TIME,TIME WITH TIME ZONE,TIMESTAMP,TIMESTAMP WITH TIME ZONE쓰기 지원을 추가했어요(#4743). - 무의미한
input-format-type/data-type조합에 대한 JSON 디코더 지원을 제거했어요. 다음 조합은 더 이상 지원되지 않아요(#4743):rfc2822:DATE,TIME,TIME WITH TIME ZONEmilliseconds-since-epoch:TIME WITH TIME ZONE,TIMESTAMP WITH TIME ZONEseconds-since-epoch:TIME WITH TIME ZONE,TIMESTAMP WITH TIME ZONE
MySQL 커넥터
- MySQL에서 GTID 모드가 비활성화됐을 때
INSERT쿼리 성능을 개선했어요(#4995).
PostgreSQL 커넥터
- 가변 정밀도
TIMESTAMP와TIMESTAMP WITH TIME ZONE타입 지원을 추가했어요(#5124, #5105).
SQL Server 커넥터
VARBINARY컬럼에NULL을 삽입할 때 실패하던 문제를 고쳤어요(#4846).- SQL Server 데이터베이스 안에서 집계를 계산해 집계 쿼리 성능을 개선했어요. 현재 다음 집계 함수가 pushdown 대상이에요:
count,min,max,sum,avg(#4139).
SPI
- 동적 필터가 완전한지,
isBlocked()메서드로 기다릴 수 있는지 여부를 반환하는DynamicFilter.isAwaitable()메서드를 추가했어요(#5043). - 커넥터가 split을 만들기 전에 복제된 조인(replicated joins)에서 파생된 동적 필터를 기다릴 수 있게 했어요(#4685).
더 알아보기 (Learn more)
동적 필터링의 다양한 세부 설정은 이후 Trino의 쿼리 성능 튜닝에서 자주 등장해요. Hive 타임스탬프 정밀도와 Iceberg 커넥터는 최신 커넥터 문서에서 확인해 보세요.