Release 329
Release 329 (2020년 1월 23일)
Presto 329 릴리스예요. 비용 기반 조인 재정렬·조인 타입 선택을 기본으로 활성화하고, 스필 중 디스크 장애 처리 개선, system.drop_stats() 프로시저 등이 담겼어요.
본문
General
- 월의 첫 날에 대한
last_day_of_month()함수의 잘못된 결과를 고쳤어요(#2452). NaN값을 가진DOUBLE·REAL타입 처리 시 잘못된 결과를 고쳤어요(#2582).- 코디네이터 호스트 이름에 밑줄(underscore)이 포함됐을 때 쿼리가 실패하던 문제를 고쳤어요(#2571).
- 행 타입이 예약 SQL 키워드 이름을 가진 필드를 포함할 때
SHOW CREATE TABLE실패를 고쳤어요(#2130). - 스필(spill) 중 흔한 디스크 장애를 처리하도록 했어요. 디스크 하나가 실패하고 여러 스필 위치가 설정돼 있으면 정상 디스크를 향후 쿼리에 사용해요(#2444).
- information_schema를 질의할 때 성능을 개선하고 외부 시스템 부하를 줄였어요(#2488).
- 중복 스칼라 서브쿼리(scalar subqueries)가 포함된 쿼리 성능을 개선했어요(#2456).
AUTOMATIC조인 타입 선택 전략을 쓸 때 브로드캐스트되는 테이블 크기를 기본적으로 100MB로 제한했어요. 이는 두 개 이상의 매우 큰 테이블을 조인할 때 쿼리 실패나 과도한 메모리 사용을 피하기 위한 거예요(#2527).- 비용 기반 조인 재정렬과 조인 타입 선택 최적화를 기본으로 활성화했어요. 이전 동작은
optimizer.join-reordering-strategy설정 속성을ELIMINATE_CROSS_JOINS로,join-distribution-type을PARTITIONED로 설정하면 복원할 수 있어요(#2528). - 표준
information_schema.columns테이블에서 비표준 컬럼comment와extra_info를 숨겼어요. 이 컬럼들은 여전히 선택할 수 있지만 테이블을 설명(describe)할 때는 더 이상 나타나지 않아요(#2306).
Security
- LDAP 인증이 서비스 계정으로 LDAP 서버에 접근하도록 하는
ldap.bind-dn과ldap.bind-passwordLDAP 속성을 추가했어요(#1917).
Hive 커넥터
- 압축되지 않은 파일에 S3 Select를 쓸 때 잘못된 데이터가 반환되던 문제를 고쳤어요. 테스트에서 S3 Select가 압축되지 않은 파일을 읽을 때 잘못된 결과를 반환하는 것으로 나타나, 압축되지 않은 파일에 대해 S3 Select를 비활성화했어요(#2399).
skip.header.line.count나skip.footer.line.count속성과 함께 S3 Select를 쓸 때 잘못된 데이터가 반환되던 문제를 고쳤어요. S3 Select API는 푸터를 건너뛰는 것이나 헤더의 한 줄 이상을 건너뛰는 것을 지원하지 않아요. 테스트에서 헤더 건너뛰기가 있는 압축 파일을 읽을 때 S3 Select가 때때로 잘못된 결과를 반환하는 것으로 나타나, 이 테이블 속성 중 하나라도 0이 아닌 값으로 설정되면 S3 Select를 비활성화했어요(#2399).- 삽입된
REAL이나DOUBLE값 중 하나가 무한대(infinite)나NaN일 때 쓰기 쿼리가 실패하던 문제를 고쳤어요(#2471). - Kinesis 커넥터가 설치됐을 때 S3에서 읽는 성능 저하를 고쳤어요(#2496).
- 테이블·파티션에서 컬럼 타입이
INTEGER로 선언됐지만 파일에서는DECIMAL타입일 때 Parquet 파일에서 데이터를 읽을 수 있게 했어요(#2451). - Parquet 파일을 읽을 때 decimal 타입의 스케일을 검증하도록 했어요. 이는 파일의 decimal 스케일이 테이블·파티션의 선언된 타입과 일치하지 않을 때 잘못된 결과를 방지해요(#2451).
- 빈 스키마를 드롭할 때 저장 위치를 삭제하도록 했어요(#2463).
- 여러 파티션을 삭제하는 동작을 동시에 실행해 성능을 개선했어요(#1812).
- 버킷팅 컬럼에 대한
IN조건자가 포함된 쿼리 성능을 개선했어요(#2277). - 테이블이나 선택된 파티션의 컬럼 통계를 제거하는
system.drop_stats()프로시저를 추가했어요(#2538).
Elasticsearch 커넥터
Array타입 지원을 추가했어요(#2441).- Elasticsearch 클러스터 부하를 줄이고 쿼리 성능을 개선했어요(#2561).
PostgreSQL 커넥터
- PostgreSQL의
TIME과 Presto의TIME데이터 타입 사이의 매핑을 고쳤어요. 이전에는 세션 시간대와 Presto 서버의 JVM 시간대 사이의 상대적 오프셋만큼 잘못 이동하는 매핑이었어요(#2549).
더 알아보기 (Learn more)
비용 기반 조인 최적화의 기본 활성화는 이후 버전의 성능 방향을 보여 줘요. system.drop_stats()와 S3 Select 제한은 최신 Hive 커넥터 문서에서 확인해 보세요.