system.query_thread_log 시스템 테이블

system.query_thread_log 시스템 테이블

system.query_thread_log 는 쿼리를 실행하는 스레드에 대한 정보(예: 스레드 이름, 스레드 시작 시간, 쿼리 처리 시간)를 담고 있어요.

출처: 문서

본문

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

Description

쿼리를 실행하는 스레드에 대한 정보를 포함해요. 예를 들어 스레드 이름, 스레드 시작 시간, 쿼리 처리 시간이에요. 로깅을 시작하려면:

데이터의 flush 주기는 query_thread_log 서버 설정 섹션의 flush_interval_milliseconds 파라미터로 설정돼요. 강제로 flush하려면 SYSTEM FLUSH LOGS 쿼리를 사용해요. ClickHouse는 테이블에서 데이터를 자동으로 삭제하지 않아요. 자세한 내용은 Introduction 을 참고하세요. log_queries_probability 설정을 사용하여 query_thread_log 테이블에 등록되는 쿼리 수를 줄일 수 있어요. 이 테이블은 언제든지 안전하게 truncate 하거나 drop 할 수 있어요.

Columns

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

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

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

  • 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) — 읽은 행 수예요.

  • read_bytes (UInt64) — 읽은 바이트 수예요.

  • written_rows (UInt64) — INSERT 쿼리의 경우 쓴 행 수예요. 다른 쿼리의 경우 열 값은 0이에요.

  • written_bytes (UInt64) — INSERT 쿼리의 경우 쓴 바이트 수예요. 다른 쿼리의 경우 열 값은 0이에요.

  • memory_usage (Int64) — 이 스레드의 맥락에서 할당된 메모리와 해제된 메모리 양 사이의 차이예요.

  • peak_memory_usage (Int64) — 이 스레드의 맥락에서 할당된 메모리와 해제된 메모리 양 사이의 최대 차이예요.

  • thread_name (LowCardinality(String)) — 스레드의 이름이에요.

  • thread_id (UInt64) — 내부 스레드 ID예요.

  • master_thread_id (UInt64) — 초기 스레드의 OS 초기 ID예요.

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

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

  • normalized_query_hash (UInt64) — 정규화된 쿼리(상수 등을 지운)의 해시예요.

  • 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를 실행하는 OS 사용자 이름이에요.

  • 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) — 다중 쿼리 스크립트에서의 순차 쿼리 번호예요.

  • script_line_number (UInt32) — 현재 쿼리가 시작되는 다중 쿼리 스크립트의 줄 번호예요.

  • 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 요청에서 전달된 UserAgent 헤더예요.

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

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

  • quota_key (String) — quotas 설정에 지정된 ‘quota key’ 예요.

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

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

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

별칭(Aliases):

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

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

Example

SELECT * FROM system.query_thread_log LIMIT 1 \G
Row 1:
──────
hostname:                      clickhouse.eu-central1.internal
event_date:                    2020-09-11
event_time:                    2020-09-11 10:08:17
event_time_microseconds:       2020-09-11 10:08:17.134042
query_start_time:              2020-09-11 10:08:17
query_start_time_microseconds: 2020-09-11 10:08:17.063150
query_duration_ms:             70
read_rows:                     0
read_bytes:                    0
written_rows:                  1
written_bytes:                 12
memory_usage:                  4300844
peak_memory_usage:             4300844
thread_name:                   TCPHandler
thread_id:                     638133
master_thread_id:              638133
query:                         INSERT INTO test1 VALUES
is_initial_query:              1
user:                          default
query_id:                      50a320fd-85a8-49b8-8761-98a86bcbacef
address:                       ::ffff:127.0.0.1
port:                          33452
initial_user:                  default
initial_query_id:              50a320fd-85a8-49b8-8761-98a86bcbacef
initial_address:               ::ffff:127.0.0.1
initial_port:                  33452
interface:                     TCP
os_user:                       bharatnc
client_hostname:               tower
client_name:                   ClickHouse
client_revision:               54437
client_version_major:          20
client_version_minor:          7
client_version_patch:          2
http_method:                   UNKNOWN
http_user_agent:
quota_key:
revision:                      54440
ProfileEvents:        {'Query':1,'SelectQuery':1,'ReadCompressedBytes':36,'CompressedReadBufferBlocks':1,'CompressedReadBufferBytes':10,'IOBufferAllocs':1,'IOBufferAllocBytes':89,'ContextLock':15,'RWLockAcquiredReadLocks':1}

See Also

  • system.query_log — 쿼리 실행에 대한 공통 정보를 포함하는 query_log 시스템 테이블에 대한 설명이에요.

  • system.query_views_log — 이 테이블은 쿼리 중 실행된 각 뷰에 대한 정보를 포함해요.