Trino 0.181 릴리스 노트

Trino 0.181 릴리스 노트

Trino 0.181 릴리스 노트입니다. 이번 릴리스에서는 일반 개선 사항과 Hive, JDBC 드라이버, PostgreSQL, Accumulo, SPI 관련 변경 사항이 들어 있어요.

출처: 문서

본문

일반 (General)

  • 쿼리에 transform_keys()transform_values()가 포함될 때의 쿼리 실패와 메모리 사용 추적 문제를 수정했어요.
  • CREATE TABLE IF NOT EXISTS 쿼리가 "Table already exists" 로 실패하는 일이 없도록 막았어요.
  • ORDER BY 표현식이 GROUP BY 절에서 정규화된 이름(full-qualified name)으로 참조된 컬럼을 가리킬 때 쿼리가 실패하던 문제를 수정했어요.
  • VARCHAR 요소를 가진 큰 배열과 맵으로 인한 과도한 GC 오버헤드를 수정했어요.
  • 가변 인자를 받는 여러 함수/연산자에 인자를 너무 많이 전달할 때의 오류 처리를 개선했어요.
  • 상수 카디널리티가 알려진 서브쿼리에 대한 count(*) 집계의 성능을 개선했어요.
  • 쿼리 성능에 대한 추가 저수준 세부 정보를 제공하는 EXPLAIN ANALYZEVERBOSE 옵션을 추가했어요.
  • EXPLAIN ANALYZE 출력에 작업별(task) 분포 정보를 추가했어요.
  • ALTER TABLE에서 DROP COLUMN을 지원해요.
  • 클러스터가 짧은 쿼리로 계속 부하를 받을 때 오래 실행되는 쿼리가 굶기(starvation)는 것을 막도록 로컬 스케줄러를 변경했어요. 새 동작은 기본적으로 꺼져 있으며 task.level-absolute-priority=true 구성 속성을 설정해 켤 수 있어요.
  • 스케줄링 퀀텀(scheduling quanta)당 CPU 시간을 더 많이 쓰는(예: 느린 커넥터 때문) 오래 실행되는 쿼리가 CPU를 불균형하게 차지하지 않도록 로컬 스케줄러의 공정성을 개선했어요. 새 동작은 기본적으로 꺼져 있으며 task.legacy-scheduling-behavior=false 구성 속성을 설정해 켤 수 있어요.
  • 경과 스케줄 시간을 기준으로 쿼리 우선순위를 조절하는 구성 옵션을 추가했어요. task.level-time-multiplier 속성은 다음 레벨에 대한 한 레벨의 목표 스케줄 시간을 제어하며, 값이 높을수록 더 짧은 쿼리에 할당되는 CPU 비율이 커져요. 이 구성 속성은 task.level-absolute-priority=truetask.legacy-scheduling-behavior=false일 때만 효과가 있어요.

Hive

  • RCFile로 테이블을 쓸 때 발생할 수 있는 네이티브 메모리 누수를 수정했어요.
  • RCFile로 테이블을 쓸 때 특정 오류를 올바르게 분류하도록 했어요.
  • 테이블을 읽을 때 파일 시스템 메타데이터 호출 횟수를 줄였어요.
  • 컬럼 삭제를 지원해요.

JDBC 드라이버

  • Statement.cancel()을 사용한 쿼리 취소를 지원해요.

PostgreSQL

  • 외부 테이블에 대한 연산을 지원해요.

Accumulo

  • 인덱스 범위를 병렬로 스캔해 쿼리 성능을 개선했어요.

SPI

  • SchemaTableName의 직렬화를 깨뜨리던 회귀를 수정했어요.
  • DROP COLUMN에 대한 접근 제어 검사를 추가했어요.

더 알아보기 (Learn more)

Trino 0.181의 변경 사항을 더 자세히 확인하고 싶다면 공식 릴리스 노트를 참고해 주세요.