timeout_overflow_mode* 세션 설정

timeout_overflow_mode* 세션 설정

이 페이지에서는 쿼리 시간 제한 초과 시의 동작을 정하는 timeout_overflow_mode* 세션 설정들을 다뤄요. 예외를 던질지, 부분 결과를 반환하며 중단할지를 설정할 수 있어요. 이 설정들은 system.settings 테이블에서 확인할 수 있으며 ClickHouse 소스에서 자동 생성돼요.

출처: 문서

본문

이 설정들은 system.settings에서 확인할 수 있으며 소스에서 자동 생성돼요.

timeout_overflow_mode

쿼리가 max_execution_time보다 오래 실행되거나, 예상 실행 시간이 max_estimated_execution_time보다 길 때(추정은 throw에서만 확인) 무엇을 할지 설정해요. 가능한 값:

  • throw: 예외를 던져요(기본값).

  • break: 쿼리 실행을 중단하고, 소스 데이터가 소진된 것처럼 부분 결과를 반환해요. 일부 작업은 부분 결과를 안전하게 반환할 수 없어서 더 작은 결과 대신 결과를 만들지 않고 중단해요. 단일 값을 계산하는 함수는 그 값을 만들지 않고 중단해요. 그 중단이 클라이언트에 TIMEOUT_EXCEEDED 오류로 전달되는지, 아니면 결과 누락으로만 전달되는지는 쿼리가 중단된 위치에 따라 달라져요. 시간 초과로 미완료 상태로 남은 Memory 테이블 변경은 테이블을 변경하지 않고 유지하며 TIMEOUT_EXCEEDED를 보고해요. INSERTQUERY_WAS_CANCELLED를 보고할 수 있어요. 다른 레플리카나 백그라운드 작업을 기다리는 일부 작업은 max_execution_time에서 전혀 멈추지 않아요: 쿼럼 쓰기는 쿼럼이 충족될 때까지 계속 기다리거나, insert_quorum_timeout이 먼저 경과하면 UNKNOWN_STATUS_OF_INSERT를 보고해요.

timeout_overflow_mode_leaf

리프 노드에서 쿼리가 max_execution_time_leaf보다 오래 실행될 때 무엇을 할지 설정해요. 가능한 값:

  • throw: 예외를 던져요(기본값).

  • break: 쿼리 실행을 중단하고, 소스 데이터가 소진된 것처럼 부분 결과를 반환해요. 일부 작업은 부분 결과를 안전하게 반환할 수 없어서 더 작은 결과 대신 결과를 만들지 않고 중단해요: 단일 값을 계산하는 함수는 그 값을 만들지 않고 중단해요. 그런 중단이 클라이언트에 TIMEOUT_EXCEEDED 오류로 전달되는지, 아니면 결과 누락으로만 전달되는지는 쿼리가 중단된 위치에 따라 달라져요.

더 알아보기 (Learn more)