system.query_thread_log 시스템 테이블
system.query_thread_log 시스템 테이블
system.query_thread_log 는 쿼리를 실행하는 스레드에 대한 정보(예: 스레드 이름, 스레드 시작 시간, 쿼리 처리 시간)를 담고 있어요.
출처: 문서
본문
ClickHouse Cloud에서의 조회 — 이 시스템 테이블의 데이터는 ClickHouse Cloud에서 각 노드에 로컬로 저장돼요. 따라서 모든 데이터의 완전한 뷰를 얻으려면 clusterAllReplicas 함수가 필요해요. 자세한 내용은 여기 를 참고하세요.
Description
쿼리를 실행하는 스레드에 대한 정보를 포함해요. 예를 들어 스레드 이름, 스레드 시작 시간, 쿼리 처리 시간이에요. 로깅을 시작하려면:
-
query_thread_log 섹션에서 파라미터를 구성해요.
-
log_query_threads 를 1로 설정해요.
데이터의 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.Names—mapKeys(ProfileEvents)의 별칭이에요. -
ProfileEvents.Values—mapValues(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 — 이 테이블은 쿼리 중 실행된 각 뷰에 대한 정보를 포함해요.