쿼리 성능 측정항목 이해

쿼리 성능 측정항목 시스템 활동 Explore는 Looker 인스턴스에서 실행되는 각 쿼리에 대한 자세한 분석을 제공합니다.

예를 들어 이 Explore를 사용하여 로드 시간이 가장 긴 쿼리 구성요소를 조사할 수 있습니다. 이 Explore를 사용하여 쿼리 성능 동향과 이상치를 식별할 수도 있습니다.

시스템 활동에서 사용할 수 있는 Explore에 관한 자세한 내용은 시스템 활동 Explore로 Looker 사용량 모니터링하기 문서 페이지를 참고하세요.

쿼리 실적 측정항목 보기

쿼리 성능 측정항목은 시스템 활동 쿼리 성능 측정항목 Explore에 표시됩니다. 쿼리 성능 측정항목 Explore를 보려면 Looker 관리자이거나 see_system_activity 권한이 있어야 합니다.

Looker 쿼리 수명 주기 이해

Looker가 데이터베이스로 보내는 각 쿼리는 여러 단계로 구성된 각 과정을 거칩니다. 이러한 각 단계는 쿼리 성능 측정항목 Explore에서 측정기준으로 표시됩니다.

개략적으로 단계는 다음과 같이 개념화할 수 있습니다.

  1. 대기열: 쿼리가 사용 가능한 비동기 작업자를 기다립니다.
  2. 초기화 및 연결: 작업자가 쿼리를 준비하고 데이터베이스에 연결합니다.
  3. 쿼리 실행: Looker는 데이터베이스에서 기본 쿼리 및 합계 또는 파생 테이블과 같은 추가 쿼리를 실행하고 결과를 로드합니다.
  4. 결과 처리: Looker 는 결과를 후처리하고 캐시에 씁니다.

Async processing 은 2~4단계를 포함하여 비동기 작업자가 쿼리에 사용하는 총 시간을 추적합니다. Explore 및 대시보드의 쿼리의 경우 이러한 단계의 누적 기간은 Async processing 값과 거의 같습니다. 다운로드, 예약된 전송, 기타 내보낸 결과의 경우 Stream to Cache가 다른 단계와 겹칩니다. 이 경우 개별 단계의 결합된 시간이 총 Async processing 기간을 초과할 수 있습니다.

쿼리 실적 측정항목

다음 섹션에는 각 쿼리 단계가 시간순으로 나열되어 있습니다. 각 쿼리 단계 섹션에는 쿼리 단계가 알파벳순으로 나열되어 있습니다. 각 쿼리 단계 측정항목은 경과 시간(초)으로 측정됩니다.

타이밍: 대기열

쿼리 단계 측정항목 설명
Queued 쿼리가 실행할 수 있도록 비동기 작업자를 사용할 수 있을 때까지 대기하는 시간(초)입니다.

타이밍: 초기화 및 연결

쿼리 단계 측정항목 설명
Acquire Connection Looker 인스턴스가 고객 데이터베이스에 대한 연결을 획득하는 데 걸리는 시간(초)입니다. 이 단계에는 사용자의 사용자 인증 정보를 조회하고, 연결 풀이 없으면 새로 만드는 시간이 포함됩니다.
Cache Load 결과 집합 캐시에서 원시 결과를 가져오는 데 걸리는 시간(초)입니다.
Explore Init: Computed prepare를 시작하기 전에 Explore를 초기화하는 데 걸리는 시간(초)입니다. 이 단계에서 null 값을 반환하면 Explore가 처음부터 로드되고 파싱되는 대신 캐시에서 검색됩니다. (Explore Init: From Cache 단계를 참조합니다.)
Explore Init: From Cache 캐시에서 Explore 초기화를 가져오는 데 걸리는 시간(초)입니다. 이 단계에서 null 값을 반환하면 Explore가 캐시에서 가져오는 대신 로드되고 파싱됩니다. (Explore Init: Computed 단계를 참조합니다.)
Model Init: Computed 쿼리를 실행하는 데 필요한 모델을 로드하고 파싱하는 데 걸리는 시간(초)입니다. 이 단계에서 null 값을 반환하면 모델이 처음부터 로드되고 파싱되는 대신 캐시에서 검색됩니다. (Model Init: From Cache 단계를 참조합니다.)
Model Init: From Cache 캐시에서 모델 정의를 가져오는 데 걸리는 시간(초)입니다. 이 단계에서 null 값을 반환하면 모델이 캐시에서 가져오는 대신 로드되고 파싱됩니다. (Model Init: Computed 단계를 참조합니다.)
Per User Throttler 사용자가 쿼리를 실행할 수 있도록 연결이 사용 가능해질 때까지 쿼리가 대기하는 시간(초)입니다.
Prepare Explore 정의에서 쿼리를 준비하는 데 걸리는 시간(초)입니다.
Project Init LookML 프로젝트를 초기화하거나 캐시에서 읽는 데 걸리는 시간(초)입니다.

타이밍: 쿼리 실행

쿼리 단계 측정항목 설명
Execute Grand Totals Query 쿼리를 실행하여 고객 데이터베이스에 총계를 생성하는 데 걸리는 시간(초)입니다. 합계 및 행 합계가 모두 사용 설정된 쿼리에만 적용됩니다.
Execute Main Query 고객 데이터베이스에서 primary 쿼리를 실행하는 데 걸리는 시간(초)입니다. 여기에는 연결 초기화 시간 또는 스로틀러 시간이 포함되지 않습니다. 이 타이밍은 연결 초기화 및 스로틀러가 완료된 후에 시작됩니다.
Execute Misc. Ancillary Queries 고객 데이터베이스에서 범위 및 측정기준 채우기 쿼리와 같은 지원 쿼리를 실행하는 데 걸리는 시간(초)입니다.
Execute Row Totals Query 쿼리를 실행하여 고객 데이터베이스에 행 합계를 생성하는 데 걸리는 시간(초)입니다. 행 합계가 사용 설정된 쿼리에만 적용됩니다.
Execute Totals Query 쿼리를 실행하여 고객 데이터베이스에 합계를 생성하는 데 걸리는 시간(초)입니다. 합계가 사용 설정된 쿼리에만 적용됩니다.
Load Grand Totals Query In Memory 쿼리를 로드하여 메모리에 총계를 생성하는 데 걸리는 시간(초)입니다. 합계 및 행 합계가 모두 사용 설정된 스트리밍되지 않은 쿼리에만 적용됩니다.
Load Main Query In Memory 기본 쿼리가 고객 데이터베이스에서 로드되는 데 걸리는 시간(초)입니다. 스트리밍되지 않은 쿼리에만 적용됩니다.
Load Misc. Ancillary Queries In Memory 범위 및 측정기준 채우기 쿼리와 같은 지원 쿼리를 메모리에 로드하는 데 걸리는 시간(초)입니다.
Load Process and Stream Main Query 기본 쿼리를 로드(고객 데이터베이스에서)하고, 처리(Looker 인스턴스에서)하여 스트리밍하는(클라이언트에) 데 걸리는 시간(초)입니다. 스트리밍된 쿼리에만 적용됩니다.
Load Row Totals Query In Memory 쿼리를 로드하여 행 합계를 메모리에 생성하는 데 걸리는 시간(초)입니다. 행 합계가 사용 설정된 스트리밍되지 않은 쿼리에만 적용됩니다.
Load Totals Query In Memory 쿼리를 로드하여 메모리에 합계를 생성하는 데 걸리는 시간(초)입니다. 합계가 사용 설정된 스트리밍되지 않은 쿼리에만 적용됩니다.
PDTs 쿼리에 필요한 영구 파생 테이블을 빌드하는 데 걸리는 시간(초)입니다.
Temporary DT 임시 파생 테이블을 빌드하는 데 걸리는 시간(초)입니다. 공통 테이블 표현식(CTE) 또는 인라인 파생 테이블을 지원하지 않는 언어(예: MySQL)에만 적용됩니다.

타이밍: 결과 처리

쿼리 단계 측정항목 설명
Postprocessing 쿼리 후 처리에 필요한 시간(초)입니다. 연결이 닫힌 후에 발생합니다.
Stream to Cache 결과가 캐시로 스트리밍되는 시간(초)입니다. 다운로드, 예약된 전송, 기타 내보낸 결과의 경우 이 단계에는 쿼리 실행이 포함되므로 다른 단계의 측정항목과 겹칩니다.

타이밍: 전체

쿼리 단계 측정항목 설명
Async processing 비동기 작업자가 쿼리에 사용하는 시간(초)입니다. 작업자는 결과 처리 단계가 완료될 때까지 쿼리 작업을 계속하므로 이 측정항목이 이 페이지의 대부분의 다른 측정항목과 겹칩니다.
Connection Held Looker 인스턴스가 고객 데이터베이스에 대한 연결을 유지하는 시간(초)입니다. 이 단계에는 고객 데이터베이스가 SQL 쿼리를 실행하는 데 걸리는 시간이 포함됩니다.

각 측정항목에는 평균 측정항목도 있습니다. 타이밍: 요약 그룹에는 각 단계의 총 시간과 평균 시간이 표시됩니다.

BigQuery BI Engine 측정항목

Looker와 함께 BigQuery BI Engine을 사용하는 경우 쿼리 성능 측정항목 Explore를 사용하여 쿼리에 대한 데이터베이스별 정보를 볼 수 있습니다. BI Engine을 사용하지 않는 쿼리와 BigQuery 데이터베이스 이외의 데이터베이스를 쿼리하면 해당 측정항목에 대해 null 값이 반환됩니다.

측정항목 측정항목 설명
BigQuery Job ID

쿼리의 BigQuery 작업 ID (또는 NULL)입니다.

BigQuery에서 쿼리의 응답 시간을 단축하기 위해 Looker는 jobCreationMode=JOB_CREATION_OPTIONAL을 사용하여 BigQuery 쿼리를 실행합니다. 이 모드에서 BigQuery는 쿼리를 빠르게 완료할 수 있다고 판단하면 BigQuery 작업을 만드는 대신 즉각적인 결과를 반환하는 것을 우선시합니다. 이 경우 쿼리에는 BigQuery 쿼리 ID가 있고 BigQuery 작업 ID는 NULL입니다.

BigQuery가 즉각적인 결과를 반환할 수 없다고 판단하면 BigQuery는 작업을 만들고 쿼리에는 BigQuery 작업 ID가 있으며 BigQuery 쿼리 ID는 NULL입니다.

BigQuery Query ID

쿼리의 BigQuery 쿼리 ID (또는 NULL)입니다.

BigQuery에서 쿼리의 응답 시간을 단축하기 위해 Looker는 jobCreationMode=JOB_CREATION_OPTIONAL을 사용하여 BigQuery 쿼리를 실행합니다. 이 모드에서 BigQuery는 쿼리를 빠르게 완료할 수 있다고 판단하면 BigQuery 작업을 만드는 대신 즉각적인 결과를 반환하는 것을 우선시합니다. 이 경우 쿼리에는 BigQuery 작업 ID 대신 BigQuery 쿼리 ID가 있습니다.

BigQuery가 즉각적인 결과를 반환할 수 없다고 판단하면 BigQuery는 작업을 만들고 쿼리에는 BigQuery 작업 ID가 있으며 BigQuery 쿼리 ID는 NULL입니다. 이 필드가 비어 있으면 BigQuery가 쿼리를 즉시 실행할 수 없었으며 대신 쿼리를 실행하는 작업을 만들었습니다. BigQuery 작업의 ID를 가져오려면 대신 BigQuery Job ID를 참고하세요.

BI Engine Mode 쿼리를 부분적으로 또는 완전히 가속화할 수 있는지 여부 이 필드에 사용 가능한 값에 대한 자세한 내용은 BI Engine 가속화 통계를 참고하세요.
BI Engine Reason 쿼리를 완전히 가속화할 수 없는 경우 이 필드에 이유가 표시됩니다. Google BigQuery에서 직접 오는 메시지입니다.

쿼리 성능 측정항목 문제 해결

쿼리 측정항목을 분석하면 Looker 인스턴스의 성능을 개선할 수 있습니다. 시작하려면 시스템 활동 대시보드 목록에서 성능 권장사항 대시보드를 선택합니다.