Skip to main content
이 페이지에서는 KILL QUERY 및 KILL MUTATION SQL 문을 설명합니다. 기본적으로는 일치하는 항목이 없어도 예외 없이 반환됩니다. 현재 실행 중인 KILL SQL 문을 제외했을 때 WHERE 표현식에 해당하는 대상 행이 system.processes에 남아 있지 않으면 KILL QUERY가 예외를 발생시키고, WHERE 표현식과 일치하는 행이 system.mutations에 하나도 없으면 KILL MUTATION이 예외를 발생시키도록 하려면 kill_throw_if_noop를 true로 설정하십시오. ON CLUSTER로 실행하면 일치 결과가 호스트 간에 집계되지 않으므로, 일치하는 항목이 없어도 예외가 발생하지 않습니다.

KILL QUERY

현재 실행 중인 쿼리를 강제로 종료하려고 시도합니다. 종료할 쿼리는 KILL 쿼리의 WHERE 절에 정의된 조건에 따라 system.processes 테이블에서 선택됩니다. 예시: 먼저, 아직 완료되지 않은 쿼리 목록을 확인해야 합니다. 다음 SQL 쿼리는 가장 오래 실행 중인 쿼리부터 보여줍니다. 단일 ClickHouse 노드의 목록:
ClickHouse 클러스터 목록:
쿼리를 강제 종료하세요:
ClickHouse Cloud 또는 자가 관리형 클러스터에서 쿼리를 종료하는 경우, 모든 레플리카에서 쿼리가 종료되도록 반드시 ON CLUSTER [cluster-name] 옵션을 사용하십시오.
읽기 전용 사용자는 자신의 쿼리만 중지할 수 있습니다. system.processes에 대한 SELECT 권한을 부여받지 않은 사용자도 쿼리 ID를 지정하면 자신의 쿼리를 취소할 수 있습니다: KILL QUERY WHERE query_id = '<id>'. 이 권한과 KILL QUERY 권한이 모두 없는 사용자가 자신이 실행하지 않은 쿼리의 ID를 지정하면 쿼리가 취소되지 않으며, 오류도 발생하지 않고 결과 행도 반환되지 않습니다. 단, kill_throw_if_noop가 활성화되어 있으면 아무 작업도 수행되지 않았다는 사실을 예외로 보고합니다. 반면 KILL QUERY 권한은 있지만 해당 SELECT 권한이 없는 사용자는 SELECT 권한이 없으므로 요청이 거부됩니다. 다른 WHERE 조건과 ON CLUSTER에는 위에서 설명한 권한이 계속 필요합니다. 기본적으로는 쿼리의 비동기 버전(ASYNC)이 사용되며, 이 버전은 쿼리가 중지되었다는 확인을 기다리지 않습니다. 동기 버전(SYNC)은 모든 쿼리가 중지될 때까지 기다리며, 각 프로세스가 중지될 때마다 해당 정보를 표시합니다. 응답에는 kill_status 컬럼이 포함되며, 이 컬럼은 다음 값을 가질 수 있습니다:
  1. finished – 쿼리가 성공적으로 종료되었습니다.
  2. waiting – 쿼리에 종료 신호를 보낸 후 쿼리가 끝나기를 기다리는 중입니다.
  3. 그 밖의 값은 쿼리를 중지할 수 없는 이유를 설명합니다.
테스트 쿼리(TEST)는 사용자의 권한만 확인하고 중지할 쿼리 목록을 표시합니다.

KILL MUTATION

오랫동안 실행 중이거나 완료되지 않은 뮤테이션이 있으면 ClickHouse 서비스가 원활하게 실행되지 않고 있음을 나타내는 경우가 많습니다. 뮤테이션은 비동기적으로 처리되므로 시스템의 사용 가능한 리소스를 모두 소모할 수 있습니다. 다음 중 하나를 수행해야 할 수 있습니다.
  • 새 뮤테이션, INSERTs, SELECTs를 모두 일시 중지하고 뮤테이션 큐가 모두 처리될 때까지 기다립니다.
  • 또는 KILL 명령을 보내 이러한 뮤테이션 중 일부를 수동으로 강제 종료합니다.
현재 실행 중인 뮤테이션을 취소하고 제거합니다. 취소할 뮤테이션은 KILL 쿼리의 WHERE 절에 지정된 필터를 사용해 system.mutations 테이블에서 선택됩니다. 테스트 쿼리(TEST)는 사용자 권한만 확인하고 강제 종료할 뮤테이션 목록을 표시합니다. 예시: 완료되지 않은 뮤테이션 수를 count()로 구합니다: 단일 ClickHouse 노드의 뮤테이션 수:
레플리카로 이루어진 ClickHouse 클러스터의 뮤테이션 수:
완료되지 않은 뮤테이션 목록을 조회합니다: 단일 ClickHouse 노드의 뮤테이션 목록:
ClickHouse 클러스터의 뮤테이션 목록:
필요에 따라 뮤테이션을 강제 종료하십시오:
이 쿼리는 뮤테이션이 멈춰 완료될 수 없을 때 유용합니다(예: 뮤테이션 쿼리의 일부 함수가 테이블에 저장된 데이터에 적용될 때 예외를 발생시키는 경우). 뮤테이션으로 이미 적용된 변경 사항은 롤백되지 않습니다.
system.mutations 테이블의 is_killed=1 컬럼(ClickHouse Cloud 전용)은 뮤테이션이 완전히 종료되었음을 반드시 의미하지는 않습니다. 뮤테이션이 오랜 시간 동안 is_killed=1 및 is_done=0 상태로 남아 있을 수 있습니다. 이는 장시간 실행 중인 다른 뮤테이션이 강제 종료된 뮤테이션을 가로막고 있을 때 발생할 수 있습니다. 이는 정상적인 상황입니다.