Skip to main content

설명

현재 사용자의 쿼리 로그 레코드를 표시합니다. query_log.databasequery_log.table 서버 설정으로 구성된 쿼리 로그 테이블(기본값: system.query_log)을 읽고, 쿼리를 시작한 사용자가 currentUser()와 같은 행만 반환합니다(쿼리를 시작한 사용자는 initial_user가 설정되어 있으면 해당 값으로, 그렇지 않으면 user 값으로 결정됩니다). 쿼리 로그 테이블 자체와 달리 system.user_query_log는 별도의 권한 부여 없이 읽을 수 있으므로, 다른 사용자의 쿼리에 대한 접근 권한을 부여하지 않고도 사용자가 자신의 쿼리를 확인할 수 있습니다. 이 기능은 쿼리 로그가 로컬에 저장된 경우에만 지원됩니다. query_log.engineDistributed 또는 읽기를 다른 서버에 위임하는 엔진으로 구성된 경우, ClickHouse 프로토콜 서버 경계를 넘어 필요한 접근 검사를 적용할 수 없으므로 system.user_query_log는 해당 테이블 읽기를 거부하고 예외를 발생시킵니다. 이 경우 query_log.enable_user_query_log = 0으로 테이블을 비활성화하십시오. query_log.enable_user_query_log 서버 설정으로 테이블을 비활성화할 수 있습니다. 쿼리 로그가 구성되지 않았거나 해당 테이블이 아직 생성되지 않은 경우 system.user_query_log는 비어 있습니다. 상수와 비교하는 쿼리 로그의 파티션 및 키 컬럼(event_date, event_time, query_start_time, query_id, type 및 이와 유사한 스칼라 컬럼)에 대한 조건은 기반 쿼리 로그 테이블로 푸시다운됩니다. 따라서 아래 예시와 같은 일반적인 조회에서는 파티션 프루닝이 적용되며 보존된 전체 로그를 스캔하지 않습니다.
이 테이블을 제공하는 ClickHouse 버전으로 업그레이드하기 전에 system.user_query_log라는 이름의 테이블을 생성한 경우, 기존 테이블의 이름을 변경하거나 삭제하거나 query_log.enable_user_query_log0으로 설정하기 전까지 서버가 시작되지 않습니다.

컬럼

  • hostname (String) — 쿼리를 실행하는 서버의 호스트명입니다.
  • 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) — attached 상태인 materialized view 등 파이프라인에 의해 트리거된 다운스트림 삽입에서 기록된 행을 포함한, 쿼리가 기록한 행 수입니다. 동기 삽입에서는 이러한 다운스트림 행이 query_kind = Insert 항목에 기록됩니다. 비동기 삽입에서는 query_kind = AsyncInsertFlush 항목에 기록되며, 클라이언트 측 Insert 항목에는 클라이언트에서 수락한 행만 기록됩니다. 행을 기록하지 않는 쿼리에서는 0입니다.
  • written_bytes (UInt64) — attached 상태인 materialized view 등 파이프라인에 의해 트리거된 다운스트림 삽입에서 기록된 바이트를 포함한, 쿼리가 기록한 바이트 수(비압축)입니다. 동기 삽입에서는 이러한 다운스트림 바이트가 query_kind = Insert 항목에 기록됩니다. 비동기 삽입에서는 query_kind = AsyncInsertFlush 항목에 기록되며, 클라이언트 측 Insert 항목에는 클라이언트에서 수락한 바이트만 기록됩니다. 데이터를 기록하지 않는 쿼리에서는 0입니다.
  • result_rows (UInt64) — SELECT 쿼리 결과의 행 수 또는 삽입으로 기록된 행 수입니다. 동기 삽입에서는 query_kind = Insert 항목에 파이프라인에 의해 트리거된 다운스트림 삽입(예: attached 상태인 materialized view)으로 기록된 행이 포함됩니다. 비동기 삽입에서는 이러한 다운스트림 행이 query_kind = AsyncInsertFlush 항목에 기록되며, 클라이언트 측 Insert 항목에는 클라이언트에서 수락한 행만 기록됩니다.
  • result_bytes (UInt64) — 쿼리 결과를 저장하는 데 사용된 RAM 용량(바이트)입니다.
  • memory_usage (UInt64) — 쿼리의 메모리 사용량입니다.
  • current_database (String) — 현재 데이터베이스 이름입니다.
  • query (String) — 쿼리 문자열입니다.
  • formatted_query (String) — 포맷된 쿼리 문자열입니다.
  • normalized_query_hash (UInt64) — 리터럴 값만 다른 쿼리에서는 동일한 값을 갖는 등의 숫자 해시 값입니다.
  • query_kind (String) — 쿼리 유형입니다.
  • databases (Array(String)) — 쿼리에 포함된 데이터베이스 이름입니다.
  • tables (Array(String)) — 쿼리에 포함된 테이블 이름입니다.
  • columns (Array(String)) — 쿼리에 포함된 컬럼 이름입니다.
  • partitions (Array(String)) — 쿼리에 포함된 파티션 이름입니다.
  • projections (Array(String)) — 쿼리 실행 중 사용된 프로젝션 이름입니다.
  • views (Array(String)) — 쿼리에 포함된 구체화된 뷰 또는 라이브 뷰의 이름입니다.
  • exception_code (Int32) — 예외 코드입니다.
  • exception (String) — 예외 메시지입니다.
  • stack_trace (String) — 스택 트레이스입니다. 쿼리가 성공적으로 완료된 경우 빈 문자열입니다.
  • is_initial_query (UInt8) — 쿼리 유형입니다. 가능한 값: 1 — 클라이언트가 시작한 쿼리, 0 — 분산 쿼리 실행의 일부로 다른 쿼리가 시작한 쿼리입니다.
  • connection_address (IPv6) — 연결이 설정된 클라이언트의 IP 주소입니다. 프록시를 통해 연결된 경우 프록시의 주소입니다.
  • connection_port (UInt16) — 연결이 설정된 클라이언트의 포트입니다. 프록시를 통해 연결된 경우 프록시의 포트입니다.
  • user (String) — 현재 쿼리를 시작한 사용자 이름입니다.
  • query_id (String) — 쿼리 ID입니다.
  • address (IPv6) — 쿼리 실행에 사용된 IP 주소입니다. 프록시를 통해 연결되고 auth_use_forwarded_address가 설정된 경우 프록시 주소가 아닌 클라이언트 주소입니다.
  • port (UInt16) — 쿼리 실행에 사용된 클라이언트 포트입니다. 프록시를 통해 연결되고 auth_use_forwarded_address가 설정된 경우 프록시 포트가 아닌 클라이언트 포트입니다.
  • initial_user (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 (String) — 세션에서 인증된 사용자 이름입니다.
  • interface (UInt8) — 쿼리가 시작된 인터페이스입니다. 가능한 값: 1 — TCP, 2 — HTTP입니다.
  • is_secure (UInt8) — 쿼리가 보안 인터페이스를 통해 실행되었는지를 나타내는 플래그
  • os_user (String) — clickhouse-client를 실행하는 운영 체제 사용자 이름입니다.
  • client_hostname (String) — clickhouse-client 또는 다른 TCP 클라이언트가 실행되는 클라이언트 머신의 호스트명입니다.
  • client_name (String) — clickhouse-client 또는 다른 TCP 클라이언트의 이름입니다.
  • client_agent (String) — 클라이언트를 호출한 AI 코딩 에이전트(예: claude-code, cursor)로, 환경 변수에서 감지됩니다. 에이전트가 감지되지 않으면 비어 있습니다.
  • client_revision (UInt32) — clickhouse-client 또는 다른 TCP 클라이언트의 revision입니다.
  • 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 (UInt8) — 쿼리를 시작한 HTTP 메서드입니다. 가능한 값: 0 - TCP 인터페이스에서 쿼리 시작, 1 - GET 메서드 사용, 2 - POST 메서드 사용, 4 - PUT 메서드 사용, 5 - DELETE 메서드 사용, 6 - HEAD 메서드 사용.
  • http_user_agent (String) — HTTP 쿼리에 전달된 UserAgent HTTP 헤더입니다.
  • http_referer (String) — HTTP 쿼리에 전달된 Referer HTTP 헤더입니다(쿼리를 수행한 페이지의 전체 또는 일부 주소를 포함합니다).
  • forwarded_for (String) — HTTP 쿼리에 전달된 X-Forwarded-For HTTP 헤더입니다.
  • quota_key (String) — 쿼터 설정에서 지정한 쿼터 키입니다(keyed 참조).
  • distributed_depth (UInt64) — 쿼리가 서버 간에 전달된 횟수입니다.
  • revision (UInt32) — ClickHouse revision입니다.
  • http_handler_name (String) — 쿼리를 호출한 SQL로 정의된 HTTP handler(CREATE HANDLER)의 이름입니다. 쿼리가 이러한 handler를 통해 호출되지 않은 경우 비어 있습니다.
  • http_request_url (String) — 쿼리를 호출한 HTTP 요청 경로(쿼리 문자열 제외)입니다. 민감한 요청 매개변수가 저장되지 않도록 쿼리 문자열은 생략됩니다. HTTP가 아닌 쿼리에서는 비어 있습니다.
  • log_comment (String) — 로그 주석입니다. max_query_size 이하 길이의 임의 문자열로 설정할 수 있습니다. 정의되지 않은 경우 빈 문자열입니다.
  • thread_ids (Array(UInt64)) — 쿼리 실행에 참여하는 스레드 ID입니다. 이 스레드들은 동시에 실행되지 않았을 수 있습니다.
  • peak_threads_usage (UInt64) — 쿼리를 실행하는 동시 스레드의 최대 수입니다.
  • ProfileEvents (Map(String, UInt64)) — 다양한 메트릭을 측정하는 ProfileEvents입니다. 이에 대한 설명은 system.events 테이블에서 확인할 수 있습니다.
  • Settings (Map(String, String)) — 클라이언트가 쿼리를 실행할 때 변경된 설정입니다. 설정 변경 로깅을 활성화하려면 log_query_settings 매개변수를 1로 설정하십시오.
  • used_aggregate_functions (Array(String)) — 쿼리 실행 중 사용된 집계 함수의 정규 이름입니다.
  • used_aggregate_function_combinators (Array(String)) — 쿼리 실행 중 사용된 집계 함수 조합자의 정규 이름입니다.
  • used_database_engines (Array(String)) — 쿼리 실행 중 사용된 데이터베이스 엔진의 정규 이름입니다.
  • used_data_type_families (Array(String)) — 쿼리 실행 중 사용된 데이터 타입 계열의 정규 이름입니다.
  • used_dictionaries (Array(String)) — 쿼리 실행 중 사용된 딕셔너리의 정규 이름입니다.
  • used_formats (Array(String)) — 쿼리 실행 중 사용된 포맷의 정규 이름입니다.
  • used_functions (Array(String)) — 쿼리 실행 중 사용된 함수의 정규 이름입니다.
  • used_storages (Array(String)) — 쿼리 실행 중 사용된 스토리지의 정규 이름입니다.
  • used_table_functions (Array(String)) — 쿼리 실행 중 사용된 테이블 함수의 정규 이름입니다.
  • used_executable_user_defined_functions (Array(String)) — 쿼리 실행 중 사용된 실행형 사용자 정의 함수의 정규 이름입니다.
  • used_sql_user_defined_functions (Array(String)) — 쿼리 실행 중 사용된 SQL 사용자 정의 함수의 정규 이름입니다.
  • used_row_policies (Array(String)) — 쿼리 실행 중 사용된 행 정책 이름 목록입니다.
  • used_privileges (Array(String)) — 쿼리 실행 중 확인에 성공한 권한입니다.
  • missing_privileges (Array(String)) — 쿼리 실행 중 누락된 권한입니다.
  • transaction_id (Tuple(UInt64, UInt64, UUID)) — 이 쿼리가 실행된 트랜잭션의 식별자입니다.
  • query_cache_usage (Enum8(‘Unknown’ = 0, ‘None’ = 1, ‘Write’ = 2, ‘Read’ = 3)) — 쿼리 실행 중 쿼리 캐시 사용 상태입니다. 값: ‘Unknown’ = 상태를 알 수 없음, ‘None’ = 쿼리 결과가 쿼리 결과 캐시에 기록되거나 쿼리 결과 캐시에서 읽히지 않음, ‘Write’ = 쿼리 결과가 쿼리 결과 캐시에 기록됨, ‘Read’ = 쿼리 결과가 쿼리 결과 캐시에서 읽힘.
  • asynchronous_read_counters (Map(String, UInt64)) — 비동기 읽기 메트릭입니다.
  • is_internal (UInt8) — 내부적으로 실행되는 보조 쿼리인지 여부를 나타냅니다.
별칭:
  • ProfileEvents.NamesmapKeys(ProfileEvents)의 별칭입니다.
  • ProfileEvents.ValuesmapValues(ProfileEvents)의 별칭입니다.
  • Settings.NamesmapKeys(Settings)의 별칭입니다.
  • Settings.ValuesmapValues(Settings)의 별칭입니다.

예시

마지막 수정일 2026년 8월 14일