Query Explain을 사용하여 쿼리 실행 분석

이 페이지에서는 쿼리를 실행할 때 쿼리 실행 정보를 가져오는 방법을 설명합니다.

Query Explain 사용

Query Explain을 사용하여 쿼리가 실행되는 방식을 파악할 수 있습니다. 이를 통해 쿼리를 최적화하는 데 사용할 수 있는 세부정보가 제공됩니다.

Google Cloud 콘솔을 통해 Query Explain을 사용할 수 있습니다.

콘솔

쿼리 편집기에서 쿼리를 실행하고 설명 탭을 엽니다.

  1. Google Cloud 콘솔에서 데이터베이스 페이지로 이동합니다.

    데이터베이스로 이동

  2. 데이터베이스 목록에서 Firestore 데이터베이스를 선택합니다. Google Cloud 콘솔에서 해당 데이터베이스의 Firestore 탐색기가 열립니다.
  3. 쿼리 편집기에 쿼리를 입력하고 실행을 클릭합니다.
  4. 설명 탭을 클릭하여 쿼리 분석 출력을 확인합니다.

분석

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

다음 단계