설명
현재 세션에서 실행된 쿼리의 쿼리 id를 실행 순서대로 담고 있습니다. 클라이언트 측에서query_id를 지정하거나 log_comment로 쿼리에 태그를 달지 않고도 system.query_log에서 “방금 실행한 쿼리”를 찾는 데 사용할 수 있습니다.
내용은 세션 범위로 한정됩니다. 각 세션은 자신의 이력만 볼 수 있으며, 다른 세션의 쿼리는 나타나지 않습니다.
쿼리 id는 쿼리가 시작될 때 기록됩니다. 따라서:
- 현재 실행 중인 쿼리는 이 테이블을 SELECT하는 시점에 이미 조회됩니다.
- 실패한 쿼리도 기록됩니다. 방금 실패한 쿼리의 id를 확인하는 것이 대표적인 활용 사례입니다.
인터페이스별 세션 범위
- 네이티브/TCP 연결(
clickhouse-client, 드라이버) 및clickhouse-local: 세션이 곧 연결이므로, 다중 쿼리 클라이언트 호출을 포함해 해당 연결의 모든 쿼리에 걸쳐 이력이 누적됩니다. session_id매개변수를 사용하는 HTTP: 동일한session_id를 전달하는 요청 간에는 세션이 만료될 때까지 이력이 유지됩니다.session_id를 사용하지 않는 HTTP: 각 요청이 곧 하나의 세션이므로, 테이블에는 현재 쿼리만 표시됩니다.
이력 크기
이력은 세션 설정session_query_ids_history_size(기본값 1000)로 크기가 제한되는 링 버퍼입니다. 이력이 이 크기를 초과하면 가장 오래된 항목부터 제거됩니다. 값을 0으로 설정하면 기록이 비활성화되며, 이전에 기록된 항목은 TRUNCATE되거나 제거될 때까지 테이블에 남아 있습니다.
이 설정은 쿼리가 파싱되기 전인 쿼리 시작 시점에 읽히므로, 해당 쿼리 자체의 SETTINGS 절은 그 쿼리의 기록 여부에 영향을 주지 않습니다. 대신 SET, HTTP URL 매개변수 또는 SETTINGS PROFILE을 사용하십시오.
TRUNCATE
TRUNCATE TABLE system.session_query_ids는 현재 세션의 이력을 지웁니다. 시퀀스 카운터는 초기화되지 않으므로 하나의 세션 내에서 sequence_number 값이 재사용되는 일은 없습니다.
컬럼
sequence_number(UInt64) — 세션 내 쿼리의 위치로, 단조 증가합니다.query_id(String) — 쿼리 ID로,system.query_log와 조인할 수 있습니다.
예시
쿼리를 몇 개 실행한 다음,system.query_log에서 해당 쿼리의 세부 정보를 조회합니다:
system.query_log와 조인하여 확인할 수 있습니다:
관련 항목
- system.query_log - 실행된 쿼리의 세부 정보.
session_query_ids_history_size설정.