메인 콘텐츠로 건너뛰기

답변

system 데이터베이스의 query_log 테이블은 다음을 포함해 모든 쿼리를 기록합니다.
  • 쿼리가 사용한 메모리 양
  • 쿼리에 필요했던 CPU 시간
다음 쿼리는 상위 10개의 쿼리를 반환합니다. 여기서 “상위”는 메모리를 가장 많이 사용한 쿼리를 뜻합니다.
응답은 다음과 같습니다:
initial_query_id는 요청을 받은 노드에서 시작된 분산 쿼리 실행의 원본 쿼리 ID를 나타냅니다. query_id에는 다른 노드에서 실행된 자식 쿼리의 ID가 포함됩니다. 자세한 내용은 이 문서를 참조하십시오.
쿼리 ID를 사용하면 해당 쿼리의 세부 정보를 더 자세히 확인할 수 있습니다. 위에서 가장 오래 실행된 쿼리(첫 번째 쿼리)를 살펴보겠습니다:
알고 보니 이는 youtube라는 테이블에 수십억 개의 데이터 행을 삽입할 때 사용한 쿼리였습니다(YouTube dislikes 데이터셋 참조):

initial_query_id VS query_id

클러스터 환경의 ClickHouse(예: ClickHouse Cloud)에서는 initial_query_id가 요청을 받은 노드에서 시작된 분산 쿼리 실행의 최초 쿼리 ID를 나타냅니다; 반면 query_id 필드에는 다른 노드에서 실행된 자식 쿼리의 ID가 들어 있습니다. 위 쿼리에 query_id를 추가하면 initial_query_id = a7262fa2-bd8b-4b51-a359-621ccf282417hostname()을 기준으로 검색 범위를 좁힐 수 있습니다:
결과는 다음과 같습니다:
여러 호스트(서로 다른 클러스터 노드)에서 나온 결과가 여러 개 있다는 점에 유의하십시오. 더 좁혀서 자식 쿼리만 보려면 WHERE 절에 query_id != initial_query_id 조건을 추가할 수도 있습니다:
쿼리가 처음 시작된 노드를 기준으로 원격 노드에서 실행된 모든 자식 쿼리를 반환합니다:
반대로, query_id = initial_query_id는 분산 쿼리가 처음 실행된 로컬 노드에서 실행된 쿼리만 반환합니다:
결과:
다른 시스템 테이블과 마찬가지로 각 필드가 의미하는 바에 대한 자세한 내용은 문서에서 확인할 수 있습니다.
마지막 수정일 2026년 6월 12일