ClickHouse Cloud에서 쿼리하기이 시스템 테이블의 데이터는 ClickHouse Cloud의 각 노드에 로컬로 저장됩니다. 따라서 전체 데이터를 모두 확인하려면
clusterAllReplicas 함수를 사용해야 합니다. 자세한 내용은 여기를 참조하십시오.설명
MergeTree 테이블을 읽는 동안 수집된 샘플 선택도 통계를 포함합니다. 이 테이블은 predicate_statistics_sample_rate가 0보다 클 때만 채워집니다.
이 테이블을 사용하면 실제 워크로드에서 사용자 프레디케이트의 선택도가 어느 정도인지, 그리고 기본 키 또는 스킵 인덱스 필터링 후 그래뉼이 몇 개 남는지 확인할 수 있습니다. 이 데이터는 워크로드 기반 인덱스 및 프로젝션 권장 사항을 위한 입력으로 사용됩니다.
행 형태
system.predicate_statistics_log에 두 가지 종류의 행을 생성할 수 있습니다.
- 필터 행:
MergeTreeSelectProcessor의 각 prewhere/filter 단계마다 생성됩니다. 이 행에는predicate_expression,input_rows,passed_rows,filter_selectivity와 전체 프레디케이트 컬럼인total_input_rows,total_passed_rows,total_selectivity가 채워집니다. 인덱스 관련 컬럼은 비어 있습니다. - 인덱스 행:
ReadFromMergeTree의 각 읽기 단계마다 생성됩니다. 이 행에는index_names,index_types,total_granules,granules_after,index_selectivities배열이 채워지며, 각 인덱스 단계(프라이머리 키, 파티션, 스킵 인덱스)마다 항목이 하나씩 들어갑니다. 프레디케이트 관련 컬럼은 비어 있습니다.
query_id와 table을 공유하므로, 둘 다 필요하면 조인할 수 있습니다.
샘플링과 오버헤드
predicate_statistics_sample_rate로 제어합니다:
0은 수집을 비활성화합니다.1은 모든 쿼리를 샘플링합니다.N > 1은query_id를 해시해 쿼리의 약1 / N을 샘플링합니다.
SYSTEM FLUSH LOGS를 사용하십시오.
컬럼
hostname(LowCardinality(String)) — 쿼리를 실행한 서버의 호스트명입니다.event_date(Date) — 이벤트 날짜입니다.event_time(DateTime) — 이 로그 항목이 기록된 시점의 타임스탬프입니다.database(LowCardinality(String)) — 대상 테이블이 속한 데이터베이스 이름입니다.table(LowCardinality(String)) — 대상 테이블의 이름입니다.query_id(String) — query_log와 연결하기 위한 Query ID입니다.predicate_expression(String) — 이 prewhere/filter 단계에서 처리되는 전체 필터 표현식입니다 (ActionsDAG dump).input_rows(UInt64) — 이 prewhere/filter 단계에 입력되는 행 수입니다.passed_rows(UInt64) — 이 prewhere/filter 단계를 통과한 행 수입니다.filter_selectivity(Float64) — 이 단계의 선택도입니다: passed_rows / input_rows.total_input_rows(UInt64) — 첫 번째 prewhere 단계에 입력되는 행 수입니다 (그래뉼에서 읽은 전체 행 수).total_passed_rows(UInt64) — 모든 prewhere 단계를 통과한 행 수입니다 (쿼리로 전달된 행 수).total_selectivity(Float64) — 전체 프레디케이트의 선택도입니다: total_passed_rows / total_input_rows.index_names(Array(LowCardinality(String))) — 적용된 인덱스 이름입니다. 예: [‘PrimaryKey’, ‘idx_bf_status’] (인덱스 행에만 해당).index_types(Array(LowCardinality(String))) — 적용된 인덱스 타입입니다: PrimaryKey, Skip, MinMax, Partition (인덱스 행에만 해당).total_granules(Array(UInt64)) — 각 인덱스 단계에 입력되는 그래뉼 수입니다 (인덱스 행에만 해당).granules_after(Array(UInt64)) — 각 인덱스 단계 후에 남는 그래뉼 수입니다 (인덱스 행에만 해당).index_selectivities(Array(Float64)) — 인덱스별 선택도입니다: granules_after / total_granules (인덱스 행에만 해당).