Query Explain을 사용하여 쿼리 실행 분석
이 페이지에서는 쿼리를 실행할 때 쿼리 실행 정보를 가져오는 방법을 설명합니다.
Query Explain 사용
Query Explain을 사용하여 쿼리가 실행되는 방식을 파악할 수 있습니다. 이를 통해 쿼리를 최적화하는 데 사용할 수 있는 세부정보가 제공됩니다.
Google Cloud 콘솔을 통해 Query Explain을 사용할 수 있습니다.
콘솔
쿼리 편집기에서 쿼리를 실행하고 설명 탭을 엽니다.
-
Google Cloud 콘솔에서 데이터베이스 페이지로 이동합니다.
- 데이터베이스 목록에서 Firestore 데이터베이스를 선택합니다. Google Cloud 콘솔에서 해당 데이터베이스의 Firestore 탐색기가 열립니다.
- 쿼리 편집기에 쿼리를 입력하고 실행을 클릭합니다.
-
설명 탭을 클릭하여 쿼리 분석 출력을 확인합니다.
분석
Query Explain의 출력에는 요약 통계와 실행 트리라는 두 가지 주요 구성요소가 포함됩니다. 다음 쿼리를 예로 들어보겠습니다.
db.pipeline().collection('/users').sort(field("status").ascending()).limit(100)
요약 통계
설명된 출력의 상단에는 실행 통계 요약이 포함되어 있습니다. 이러한 통계를 사용하여 쿼리의 지연 시간 또는 비용이 높은지 확인할 수 있습니다. 또한 쿼리가 메모리 한도에 얼마나 근접했는지 알 수 있는 메모리 통계도 포함되어 있습니다.
Execution:
results returned: 2
request peak memory usage: 20.25 KiB (20,736 B)
data bytes read: 148 B
entity row scanned: 2
Billing:
read units: 1
실행 트리
실행 트리는 쿼리 실행을 일련의 노드로 설명합니다. 하단 노드(리프 노드)는 스토리지 레이어에서 데이터를 가져오고, 이 데이터는 트리를 따라 올라가 쿼리 응답을 생성합니다.
각 실행 노드에 대한 자세한 내용은 실행 참조를 참조하세요.
이 정보를 사용하여 쿼리를 최적화하는 방법에 대한 자세한 내용은 쿼리 실행 최적화를 참조하세요.
다음은 실행 트리의 예입니다.
Tree:
• Compute
| $out_1: map_set($record_1, "__name__", $__name___1, "__key__", unset)
| is query result: true
|
| Execution:
| records returned: 2
| latency: 5.96 ms (local <1 ms)
|
└── • Compute
| $__name___1: map_get($record_1, "__key__")
|
| Execution:
| records returned: 2
| latency: 5.88 ms (local <1 ms)
|
└── • MajorSort
| fields: [$v_1 ASC]
| output: [$record_1]
| limit: 100
|
| Execution:
| records returned: 2
| latency: 5.86 ms (local <1 ms)
| peak memory usage: 20.25 KiB (20,736 B)
|
└── • Compute
| $v_1: map_get($record_1, "status")
|
| Execution:
| records returned: 2
| latency: 5.23 ms (local <1 ms)
|
└── • TableScan
source: /users
order: UNDEFINED
properties: *
row range: (-∞..+∞)
output record: $record_1
variables: [$record_1]
Execution:
records returned: 2
latency: 4.68 ms
records scanned: 2
data bytes read: 148 B