system.query_log 시스템 테이블

system.query_log 시스템 테이블

system.query_log 는 실행된 쿼리에 대한 메타데이터와 통계(예: 시작 시간, 지속 시간, 오류 메시지, 리소스 사용량, 기타 실행 세부 정보)를 저장해요. 쿼리 결과는 저장하지 않아요. 이 테이블은 언제든지 안전하게 truncate 하거나 drop 할 수 있어요.

출처: 문서

본문

ClickHouse Cloud에서의 조회 — 이 시스템 테이블의 데이터는 ClickHouse Cloud에서 각 노드에 로컬로 저장돼요. 따라서 모든 데이터의 완전한 뷰를 얻으려면 clusterAllReplicas 함수가 필요해요. 자세한 내용은 여기 를 참고하세요.

Description

실행된 쿼리에 대한 메타데이터와 통계(예: 시작 시간, 지속 시간, 오류 메시지, 리소스 사용량, 기타 실행 세부 정보)를 저장해요. 쿼리 결과는 저장하지 않아요. 서버 구성의 query_log 섹션에서 쿼리 로깅 설정을 변경할 수 있어요. log_queries = 0 으로 설정해 쿼리 로깅을 비활성화할 수 있어요. 이 테이블의 정보는 문제 해결에 중요하므로 로깅을 끄는 것을 권장하지 않아요. 데이터의 flush 주기는 query_log 서버 설정 섹션의 flush_interval_milliseconds 파라미터로 설정돼요. 강제로 flush하려면 SYSTEM FLUSH LOGS 쿼리를 사용해요. ClickHouse는 테이블에서 데이터를 자동으로 삭제하지 않아요. 자세한 내용은 Introduction 을 참고하세요. system.query_log 테이블은 두 종류의 쿼리를 등록해요:

  • 초기(최상위) 쿼리.

  • 다른 쿼리에 의해 시작된 자식 쿼리(분산 실행을 위한 쿼리와 뷰 평가 같은 내부 하위 쿼리 포함). 이 쿼리들에 대해서는 원래 초기 쿼리에 대한 정보가 initial_* 열에 표시돼요.

기본적으로 초기 쿼리 필터링 일반적으로 system.query_log 를 조회할 때마다 is_initial_query = 1 을 추가해요. 이것은 자식 쿼리를 제외하여 개별 처리 단계가 초기 쿼리와 별도로 계산되지 않게 해요. 이 필터는 쿼리가 클라이언트가 제출한 것임을 의미하지는 않아요. 서버 내부 작업도 초기 쿼리가 될 수 있기 때문이에요. 초기 쿼리를 그 ID를 유지하는 자식 쿼리와 함께 추적해야 할 때는 대신 initial_query_id 를 사용해요. 초기 쿼리는 initial_query_idquery_id 에 같은 값을 가지며, 같은 체인의 자식 쿼리는 초기 쿼리의 initial_query_id 를 유지하고 자신의 query_id 를 가져요. 초기 쿼리가 만든 모든 작업이 이렇게 연관되는 것은 아니에요. 서버에서 파견된 작업은 원격 QueryRunner 파견처럼 새 initial_query_id 로 새 초기 쿼리 체인을 시작할 수 있어요.

SELECT
    hostname,
    type,
    query_id,
    initial_query_id,
    is_initial_query,
    query
FROM system.query_log
WHERE initial_query_id = ''
ORDER BY event_time_microseconds;

연관된 자식 쿼리가 다른 노드에서 실행될 수 있다면 예를 들어 clusterAllReplicas 를 사용해 모든 노드에서 system.query_log 를 조회해요. 각 쿼리는 상태에 따라(type 열 참고) query_log 테이블에 하나 또는 두 개의 행을 만들어요:

  • 쿼리 실행이 성공하면 QueryStartQueryFinish 유형의 두 행이 만들어져요.

  • 쿼리 처리 중 오류가 발생하면 QueryStartExceptionWhileProcessing 유형의 두 이벤트가 만들어져요.

  • 쿼리 시작 전에 오류가 발생하면 ExceptionBeforeStart 유형의 단일 이벤트가 만들어져요.

log_queries_probability 설정을 사용하여 query_log 테이블에 등록되는 쿼리 수를 줄일 수 있어요. log_formatted_queries 설정을 사용하여 포맷된 쿼리를 formatted_query 열에 기록할 수 있어요. 이 테이블은 언제든지 안전하게 truncate 하거나 drop 할 수 있어요.

Columns

  • hostname (LowCardinality(String)) — 쿼리를 실행한 서버의 호스트 이름이에요.

  • clickhouse_version (LowCardinality(String)) — 이 행을 만든 ClickHouse 서버의 버전이에요.

  • system_processor (LowCardinality(String)) — 이 행을 만든 ClickHouse 서버의 CPU 아키텍처예요.

  • type (Enum8(‘QueryStart’ = 1, ‘QueryFinish’ = 2, ‘ExceptionBeforeStart’ = 3, ‘ExceptionWhileProcessing’ = 4)) — 쿼리 실행 중 발생한 이벤트의 유형이에요. 값: QueryStart — 쿼리 실행의 성공적인 시작, QueryFinish — 쿼리 실행의 성공적인 종료, ExceptionBeforeStart — 쿼리 실행 시작 전 예외, ExceptionWhileProcessing — 쿼리 실행 중 예외.

  • event_date (Date) — 쿼리 시작 날짜예요.

  • event_time (DateTime) — 쿼리 시작 시간이에요.

  • event_time_microseconds (DateTime64(6)) — 마이크로초 정밀도의 쿼리 시작 시간이에요.

  • query_start_time (DateTime) — 쿼리 실행 시작 시간이에요.

  • query_start_time_microseconds (DateTime64(6)) — 마이크로초 정밀도의 쿼리 실행 시작 시간이에요.

  • query_duration_ms (UInt64) — 쿼리 실행 시간(밀리초)이에요.

  • read_rows (UInt64) — 쿼리에 참여한 모든 테이블과 테이블 함수에서 읽은 총 행 수예요. 일반 하위 쿼리, IN 및 JOIN용 하위 쿼리를 포함해요. 분산 쿼리의 경우 read_rows 는 모든 복제본에서 읽은 총 행 수를 포함해요. 각 복제본은 자신의 read_rows 값을 보내고 쿼리 시작자 서버가 받은 값과 로컬 값을 모두 합산해요. 캐시 볼륨은 이 값에 영향을 주지 않아요.

  • read_bytes (UInt64) — 쿼리에 참여한 모든 테이블과 테이블 함수에서 읽은 총 바이트 수예요. 일반 하위 쿼리, IN 및 JOIN용 하위 쿼리를 포함해요. 분산 쿼리의 경우 read_bytes 는 모든 복제본에서 읽은 총 행 수를 포함해요. 각 복제본은 자신의 read_bytes 값을 보내고 쿼리 시작자 서버가 받은 값과 로컬 값을 모두 합산해요. 캐시 볼륨은 이 값에 영향을 주지 않아요.

  • written_rows (UInt64) — 쿼리가 쓴 행 수예요. 파이프라인에 의해 트리거된 다운스트림 삽입(예: 연결된 구체화된 뷰)이 쓴 행도 포함해요. 동기 삽입의 경우 이러한 다운스트림 행이 query_kind = Insert 항목에 기록되고, 비동기 삽입의 경우 query_kind = AsyncInsertFlush 항목에 기록되며 클라이언트 측 Insert 항목은 클라이언트로부터 받은 행만 기록해요. 행을 쓰지 않는 쿼리는 0이에요.

  • written_bytes (UInt64) — 쿼리가 쓴 바이트 수(압축되지 않음)예요. 파이프라인에 의해 트리거된 다운스트림 삽입(예: 연결된 구체화된 뷰)이 쓴 바이트도 포함해요. 동기 삽입의 경우 이러한 다운스트림 바이트가 query_kind = Insert 항목에 기록되고, 비동기 삽입의 경우 query_kind = AsyncInsertFlush 항목에 기록되며 클라이언트 측 Insert 항목은 클라이언트로부터 받은 바이트만 기록해요. 데이터를 쓰지 않는 쿼리는 0이에요.

  • result_rows (UInt64) — SELECT 쿼리 결과의 행 수 또는 삽입이 쓴 행 수예요. 동기 삽입의 경우 query_kind = Insert 항목에 파이프라인이 트리거한 다운스트림 삽입(예: 연결된 구체화된 뷰)이 쓴 행이 포함되고, 비동기 삽입의 경우 해당 다운스트림 행이 query_kind = AsyncInsertFlush 항목에 기록되며 클라이언트 측 Insert 항목은 클라이언트로부터 받은 행만 기록해요.

  • result_bytes (UInt64) — 쿼리 결과를 저장하는 데 사용된 RAM 볼륨(바이트)이에요.

  • memory_usage (UInt64) — 쿼리의 메모리 소비예요.

  • current_database (LowCardinality(String)) — 현재 데이터베이스의 이름이에요.

  • query (String) — 쿼리 문자열이에요.

  • formatted_query (String) — 포맷된 쿼리 문자열이에요.

  • normalized_query_hash (UInt64) — 리터럴 값만 다른 쿼리에는 동일한 숫자 해시 값이에요.

  • query_kind (LowCardinality(String)) — 쿼리 유형이에요.

  • databases (Array(LowCardinality(String))) — 쿼리에 있는 데이터베이스 이름이에요.

  • tables (Array(LowCardinality(String))) — 쿼리에 있는 테이블 이름이에요.

  • columns (Array(LowCardinality(String))) — 쿼리에 있는 열 이름이에요.

  • partitions (Array(LowCardinality(String))) — 쿼리에 있는 파티션 이름이에요.

  • projections (Array(LowCardinality(String))) — 쿼리 실행 중 사용된 프로젝션 이름이에요.

  • views (Array(LowCardinality(String))) — 쿼리에 있는 (구체화된 또는 라이브) 뷰 이름이에요.

  • exception_code (Int32) — 예외 코드예요.

  • exception (String) — 예외 메시지예요.

  • stack_trace (String) — 스택 트레이스예요. 쿼리가 성공적으로 완료되면 빈 문자열이에요.

  • is_initial_query (UInt8) — 쿼리가 초기 쿼리인지 여부예요. 가능한 값: 1 — 초기(최상위) 쿼리, 0 — 다른 쿼리에 의해 시작된 자식 쿼리(분산 실행을 위한 쿼리와 내부 하위 쿼리 포함).

  • connection_address (IPv6) — 연결이 만들어진 클라이언트 IP 주소예요. 프록시를 통해 연결할 때는 프록시의 주소가 돼요.

  • connection_port (UInt16) — 연결이 만들어진 클라이언트 포트예요. 프록시를 통해 연결할 때는 프록시의 포트가 돼요.

  • user (LowCardinality(String)) — 현재 쿼리를 시작한 사용자의 이름이에요.

  • query_id (String) — 쿼리 ID예요.

  • address (IPv6) — 쿼리를 만드는 데 사용된 IP 주소예요. 프록시를 통해 연결하고 auth_use_forwarded_address 가 설정된 경우 프록시 대신 클라이언트의 주소가 돼요.

  • port (UInt16) — 쿼리를 만드는 데 사용된 클라이언트 포트예요. 프록시를 통해 연결하고 auth_use_forwarded_address 가 설정된 경우 프록시 대신 클라이언트의 포트가 돼요.

  • initial_user (LowCardinality(String)) — 동일한 쿼리 체인에서 초기 쿼리를 실행한 사용자의 이름이에요.

  • initial_query_id (String) — 동일한 쿼리 체인에서 초기 쿼리의 ID예요.

  • initial_address (IPv6) — 동일한 쿼리 체인에서 초기 쿼리가 시작된 IP 주소예요.

  • initial_port (UInt16) — 동일한 쿼리 체인에서 초기 쿼리가 시작된 클라이언트 포트예요.

  • initial_query_start_time (DateTime) — 동일한 쿼리 체인에서 초기 쿼리의 시작 시간이에요.

  • initial_query_start_time_microseconds (DateTime64(6)) — 동일한 쿼리 체인에서 초기 쿼리의 시작 시간(마이크로초 정밀도)이에요.

  • authenticated_user (LowCardinality(String)) — 세션에서 인증된 사용자의 이름이에요.

  • interface (Enum8(‘Unknown’ = 0, ‘TCP’ = 1, ‘HTTP’ = 2, ‘gRPC’ = 3, ‘MySQL’ = 4, ‘PostgreSQL’ = 5, ‘Local’ = 6, ‘TCP_Interserver’ = 7, ‘Prometheus’ = 8, ‘Background’ = 9, ‘ArrowFlight’ = 10)) — 클라이언트가 보고한 대로 쿼리가 시작된 인터페이스예요. 보고된 인터페이스가 이 서버가 인식하는 것이 아니면 Unknown 이에요.

  • is_secure (UInt8) — 쿼리가 보안 인터페이스를 통해 실행되었는지 여부를 나타내는 플래그예요.

  • os_user (LowCardinality(String)) — clickhouse-client를 실행하는 운영체제 사용자 이름이에요.

  • client_hostname (LowCardinality(String)) — clickhouse-client 또는 다른 TCP 클라이언트가 실행되는 클라이언트 머신의 호스트 이름이에요.

  • client_name (LowCardinality(String)) — clickhouse-client 또는 다른 TCP 클라이언트 이름이에요.

  • client_agent (LowCardinality(String)) — 클라이언트를 호출한 AI 코딩 에이전트(예: claude-code, cursor)로, 환경 변수에서 감지돼요. 에이전트가 감지되지 않으면 비어 있어요.

  • client_revision (UInt32) — clickhouse-client 또는 다른 TCP 클라이언트의 리비전이에요.

  • client_version_major (UInt32) — clickhouse-client 또는 다른 TCP 클라이언트의 메이저 버전이에요.

  • client_version_minor (UInt32) — clickhouse-client 또는 다른 TCP 클라이언트의 마이너 버전이에요.

  • client_version_patch (UInt32) — clickhouse-client 또는 다른 TCP 클라이언트 버전의 패치 구성 요소예요.

  • script_query_number (UInt32) — clickhouse-client용 여러 쿼리가 있는 스크립트에서의 쿼리 번호예요.

  • script_line_number (UInt32) — clickhouse-client용 여러 쿼리가 있는 스크립트에서 쿼리 시작의 줄 번호예요.

  • http_method (Enum8(‘UNKNOWN’ = 0, ‘GET’ = 1, ‘POST’ = 2, ‘OPTIONS’ = 3, ‘PUT’ = 4, ‘DELETE’ = 5, ‘HEAD’ = 6)) — 쿼리를 시작한 HTTP 메서드예요. 쿼리가 HTTP로 도착하지 않았거나 보고된 메서드가 이 서버가 인식하는 것이 아니면 UNKNOWN 이에요.

  • http_user_agent (LowCardinality(String)) — HTTP 쿼리에서 전달된 HTTP 헤더 UserAgent예요.

  • http_referer (String) — HTTP 쿼리에서 전달된 HTTP 헤더 Referer예요(쿼리를 만드는 페이지의 절대 또는 부분 주소 포함).

  • forwarded_for (String) — HTTP 쿼리에서 전달된 HTTP 헤더 X-Forwarded-For예요.

  • quota_key (String) — quotas 설정에 지정된 쿼터 키예요(keyed 참고).

  • distributed_depth (UInt64) — 쿼리가 서버 간에 전달된 횟수예요.

  • revision (UInt32) — ClickHouse 리비전이에요.

  • http_handler_name (String) — 쿼리를 호출한 SQL 정의 HTTP 핸들러(CREATE HANDLER)의 이름이에요. 그러한 핸들러를 통해 호출되지 않았으면 비어 있어요.

  • http_request_url (String) — 쿼리를 호출한 HTTP 요청 경로(쿼리 문자열 제외)예요. 민감한 요청 파라미터가 유지되지 않도록 쿼리 문자열은 생략돼요. HTTP가 아닌 쿼리는 비어 있어요.

  • log_comment (String) — 로그 설명(comment)이에요. max_query_size 보다 길지 않은 임의 문자열로 설정할 수 있어요. 정의되지 않았으면 빈 문자열이에요.

  • thread_ids (Array(UInt64)) — 쿼리 실행에 참여하는 스레드 ID예요. 이 스레드들은 동시에 실행되지 않았을 수 있어요.

  • peak_threads_usage (UInt64) — 쿼리를 실행하는 동시 스레드의 최대 수예요.

  • ProfileEvents (Map(LowCardinality(String), UInt64)) — 다양한 메트릭을 측정하는 ProfileEvents 예요. 이에 대한 설명은 system.events 테이블에서 찾을 수 있어요.

  • Settings (Map(LowCardinality(String), LowCardinality(String))) — 클라이언트가 쿼리를 실행할 때 변경된 설정이에요. 설정 변경 로깅을 활성화하려면 log_query_settings 파라미터를 1로 설정해요.

  • used_aggregate_functions (Array(LowCardinality(String))) — 쿼리 실행 중 사용된 집계 함수의 정식 이름이에요.

  • used_aggregate_function_combinators (Array(LowCardinality(String))) — 쿼리 실행 중 사용된 집계 함수 컴비네이터의 정식 이름이에요.

  • used_database_engines (Array(LowCardinality(String))) — 쿼리 실행 중 사용된 데이터베이스 엔진의 정식 이름이에요.

  • used_data_type_families (Array(LowCardinality(String))) — 쿼리 실행 중 사용된 데이터 타입 계열의 정식 이름이에요.

  • used_dictionaries (Array(LowCardinality(String))) — 쿼리 실행 중 사용된 딕셔너리의 정식 이름이에요.

  • used_formats (Array(LowCardinality(String))) — 쿼리 실행 중 사용된 포맷의 정식 이름이에요.

  • used_functions (Array(LowCardinality(String))) — 쿼리 실행 중 사용된 함수의 정식 이름이에요.

  • used_storages (Array(LowCardinality(String))) — 쿼리 실행 중 사용된 스토리지의 정식 이름이에요.

  • used_table_functions (Array(LowCardinality(String))) — 쿼리 실행 중 사용된 테이블 함수의 정식 이름이에요.

  • used_executable_user_defined_functions (Array(LowCardinality(String))) — 쿼리 실행 중 사용된 실행 가능한 사용자 정의 함수의 정식 이름이에요.

  • used_sql_user_defined_functions (Array(LowCardinality(String))) — 쿼리 실행 중 사용된 SQL 사용자 정의 함수의 정식 이름이에요.

  • used_row_policies (Array(LowCardinality(String))) — 쿼리 실행 중 사용된 행 정책 이름 목록이에요.

  • used_privileges (Array(LowCardinality(String))) — 쿼리 실행 중 성공적으로 확인된 권한이에요.

  • missing_privileges (Array(LowCardinality(String))) — 쿼리 실행 중 누락된 권한이에요.

  • used_number_of_joins (UInt64) — 이 쿼리에 대해 실행된 물리적 조인 수예요. 파이프라인이 빌드될 때 수집되므로 모든 최적화 후 남은 조인을 반영하며, 쿼리 텍스트의 JOIN 절 수가 아니에요. 조인은 중첩이 얼마나 깊든지 간에 계산돼요: 하위 쿼리, 공통 테이블 표현식, 뷰, 뷰의 뷰, 그리고 INSERT가 트리거한 구체화된 뷰의 SELECT 모두가 보내진 쿼리의 행에 보고되므로, 자체 텍스트에 JOIN이 전혀 없는 쿼리에서도 0이 아닐 수 있어요. 실행 없이 파이프라인을 빌드하는 쿼리(예: EXPLAIN PIPELINE)는 설명하는 쿼리의 조인을 보고해요. 일부 파이프라인은 단일 쿼리가 실행되는 동안 두 번 이상 조립되는데, 예를 들어 구체화된 뷰의 SELECT는 이것을 트리거하는 INSERT의 모든 블록과 모든 삽입 스트림에 대해 조립되고, 재귀 CTE의 재귀 멤버는 모든 반복마다 조립되며, 루프의 관계는 재시작될 때마다 다시 조립돼요. 그러한 파이프라인의 조인은 여전히 한 번 계산되므로, 이 숫자는 파이프라인이 조립된 횟수가 아니라 쿼리를 기술해요.

  • used_join_algorithms (Array(LowCardinality(String))) — used_number_of_joins 에 계산된 조인의 알고리즘이에요: ‘HASH’, ‘PARALLEL_HASH’, ‘GRACE_HASH’, ‘PARTIAL_MERGE’, ‘FULL_SORTING_MERGE’, ‘PARALLEL_FULL_SORTING_MERGE’, ‘IE_JOIN’, ‘DIRECT’, ‘PASTE’ 및 ‘CONSTANT’, 정렬되고 중복 제거되어 여러 조인이 공유하는 알고리즘은 한 번만 나타나요. 이것은 각 조인을 실행하기 위해 선택된 알고리즘이며 join_algorithm 설정이 허용하는 알고리즘은 아니에요. 실행 중간에 알고리즘이 다른 것으로 교체될 수 있으며, 그 경우 둘 다 보고돼요.

  • used_join_kinds (Array(LowCardinality(String))) — used_number_of_joins 에 계산된 조인의 종류로, 조인당 하나의 요소라서 여러 조인이 공유하는 종류는 여러 번 나타나요. 요소는 실행 순서가 아닌 정렬되어 있어요. 각 종류는 실행된 것이며, 옵티마이저가 조인의 양쪽을 바꿔 실행하여 LEFT를 RIGHT로 전환할 수 있으므로 쿼리 텍스트와 다를 수 있어요.

  • used_join_strictness (Array(LowCardinality(String))) — used_number_of_joins 에 계산된 조인의 엄격성으로, 조인당 하나의 요소이며 used_join_kinds 와 같은 순서예요: 주어진 인덱스의 요소는 두 배열 모두에서 같은 조인을 기술해요.

  • spilled_to_disk (Array(LowCardinality(String))) — 쿼리 실행 중 디스크의 임시 파일에 데이터를 쓴(외부 메모리 처리) 연산자로, 정렬되고 중복 제거돼요. 빈 배열은 쿼리가 완전히 메모리에서 실행되었음을 의미해요.

  • transaction_id (Tuple(UInt64, UInt64, UUID, Int64)) — 이 쿼리가 실행된 범위의 트랜잭션 식별자예요.

  • query_cache_usage (Enum8(‘Unknown’ = 0, ‘None’ = 1, ‘Write’ = 2, ‘Read’ = 3)) — 쿼리 실행 중 쿼리 캐시 사용이에요. 값: ‘Unknown’ = 상태를 알 수 없음, ‘None’ = 쿼리 결과가 쿼리 결과 캐시에 쓰이지도 읽히지도 않음, ‘Write’ = 쿼리 결과가 쿼리 결과 캐시에 쓰여짐, ‘Read’ = 쿼리 결과가 쿼리 결과 캐시에서 읽힘.

  • asynchronous_read_counters (Map(LowCardinality(String), UInt64)) — 비동기 읽기 메트릭이에요.

  • is_internal (UInt8) — 내부적으로 실행되는 보조 쿼리인지 여부를 나타내요.

별칭(Aliases):

  • ProfileEvents.NamesmapKeys(ProfileEvents) 의 별칭이에요.

  • ProfileEvents.ValuesmapValues(ProfileEvents) 의 별칭이에요.

  • Settings.NamesmapKeys(Settings) 의 별칭이에요.

  • Settings.ValuesmapValues(Settings) 의 별칭이에요.

Examples

기본 예제

SELECT *
FROM system.query_log
WHERE type = 'QueryFinish'
  AND is_initial_query = 1
ORDER BY query_start_time DESC
LIMIT 1
FORMAT Vertical;
Row 1:
──────
hostname:                              clickhouse.eu-central1.internal
type:                                  QueryFinish
event_date:                            2021-11-03
event_time:                            2021-11-03 16:13:54
event_time_microseconds:               2021-11-03 16:13:54.953024
query_start_time:                      2021-11-03 16:13:54
query_start_time_microseconds:         2021-11-03 16:13:54.952325
query_duration_ms:                     0
read_rows:                             69
read_bytes:                            6187
written_rows:                          0
written_bytes:                         0
result_rows:                           69
result_bytes:                          48256
memory_usage:                          0
current_database:                      default
query:                                 DESCRIBE TABLE system.query_log
formatted_query:
normalized_query_hash:                 8274064835331539124
query_kind:
databases:                             []
tables:                                []
columns:                               []
projections:                           []
views:                                 []
exception_code:                        0
exception:
stack_trace:
is_initial_query:                      1
user:                                  default
query_id:                              7c28bbbb-753b-4eba-98b1-efcbe2b9bdf6
address:                               ::ffff:127.0.0.1
port:                                  40452
initial_user:                          default
initial_query_id:                      7c28bbbb-753b-4eba-98b1-efcbe2b9bdf6
initial_address:                       ::ffff:127.0.0.1
initial_port:                          40452
initial_query_start_time:              2021-11-03 16:13:54
initial_query_start_time_microseconds: 2021-11-03 16:13:54.952325
interface:                             TCP
os_user:                               sevirov
client_hostname:                       clickhouse.eu-central1.internal
client_name:                           ClickHouse
client_revision:                       54449
client_version_major:                  21
client_version_minor:                  10
client_version_patch:                  1
http_method:                           UNKNOWN
http_user_agent:
http_referer:
forwarded_for:
quota_key:
revision:                              54456
log_comment:
thread_ids:                            [30776,31174]
ProfileEvents:                         {'Query':1,'NetworkSendElapsedMicroseconds':59,'NetworkSendBytes':2643,'SelectedRows':69,'SelectedBytes':6187,'ContextLock':9,'RWLockAcquiredReadLocks':1,'RealTimeMicroseconds':817,'UserTimeMicroseconds':427,'SystemTimeMicroseconds':212,'OSCPUVirtualTimeMicroseconds':639,'OSReadChars':894,'OSWriteChars':319}
Settings:                              {'load_balancing':'random','max_memory_usage':'10000000000'}
used_aggregate_functions:              []
used_aggregate_function_combinators:   []
used_database_engines:                 []
used_data_type_families:               []
used_dictionaries:                     []
used_formats:                          []
used_functions:                        []
used_storages:                         []
used_table_functions:                  []
used_executable_user_defined_functions:[]
used_sql_user_defined_functions:       []
used_privileges:                       []
missing_privileges:                    []
used_number_of_joins:                  0
used_join_algorithms:                  []
used_join_kinds:                       []
used_join_strictness:                  []
spilled_to_disk:                       []
query_cache_usage:                     None

Cloud 예제 ClickHouse Cloud에서 system.query_log 는 각 노드에 로컬이므로 모든 항목을 보려면 clusterAllReplicas 를 통해 조회해야 해요. 예를 들어 “default” 클러스터의 모든 복제본에서 query_log 행을 집계하려면 다음과 같이 쓸 수 있어요:

SELECT *
FROM clusterAllReplicas('default', system.query_log)
WHERE event_time >= now() - toIntervalHour(1)
LIMIT 10
SETTINGS skip_unavailable_shards = 1;

See Also

  • system.query_thread_log — 이 테이블은 각 쿼리 실행 스레드에 대한 정보를 포함해요.

  • system.session_query_ids — 이 테이블은 현재 세션에서 실행된 쿼리의 쿼리 ID를 포함하여 로그에서 자신의 쿼리를 찾을 수 있게 해줘요.