Release 329

Release 329 (2020년 1월 23일)

Presto 329 릴리스예요. 비용 기반 조인 재정렬·조인 타입 선택을 기본으로 활성화하고, 스필 중 디스크 장애 처리 개선, system.drop_stats() 프로시저 등이 담겼어요.

출처: Trino Release 329

본문

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-typePARTITIONED로 설정하면 복원할 수 있어요(#2528).
  • 표준 information_schema.columns 테이블에서 비표준 컬럼 commentextra_info를 숨겼어요. 이 컬럼들은 여전히 선택할 수 있지만 테이블을 설명(describe)할 때는 더 이상 나타나지 않아요(#2306).

Security

  • LDAP 인증이 서비스 계정으로 LDAP 서버에 접근하도록 하는 ldap.bind-dnldap.bind-password LDAP 속성을 추가했어요(#1917).

Hive 커넥터

  • 압축되지 않은 파일에 S3 Select를 쓸 때 잘못된 데이터가 반환되던 문제를 고쳤어요. 테스트에서 S3 Select가 압축되지 않은 파일을 읽을 때 잘못된 결과를 반환하는 것으로 나타나, 압축되지 않은 파일에 대해 S3 Select를 비활성화했어요(#2399).
  • skip.header.line.countskip.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 커넥터 문서에서 확인해 보세요.