Query Explain으로 쿼리 실행 분석

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

Query Explain 사용

Query Explain을 사용하여 쿼리가 실행되는 방식을 파악할 수 있습니다. 이 페이지에서는 queriegoogledata/devsite/site-cloud/ko/firestore/mongodb-compatibility/quotas.mds를 최적화하는 데 사용할 수 있는 세부정보를 제공합니다. 쿼리 설명 지원은 현재 Google Cloud 콘솔로 제한됩니다.

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

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

    데이터베이스로 이동

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

    콘솔의 쿼리 설명 탭

분석

쿼리 설명의 출력에는 요약 통계와 실행 트리라는 두 가지 기본 구성요소가 포함됩니다. 다음 쿼리를 예로 들어 보겠습니다.

db.order.aggregate(
 [
   { "$match": { "user_id": 1234 } },
   { "$sort": { "date_placed": 1 } }
 ]
)

요약 통계

설명된 출력의 상단에는 실행 통계의 요약이 포함되어 있습니다. 이 통계를 사용하여 쿼리의 지연 시간 또는 비용이 높은지 확인합니다. 또한 쿼리가 메모리 한도에 얼마나 근접했는지 알려주는 메모리 통계도 포함되어 있습니다.

Billing Metrics:
read units: 1

Execution Metrics:
request peak memory usage: 4.00 KiB (4,096 B)
results returned: 1

실행 트리

실행 트리는 쿼리 실행을 일련의 노드로 설명합니다. 하단 노드 (리프 노드)는 저장소 레이어에서 데이터를 가져와 트리를 위로 이동하여 쿼리 응답을 생성합니다.

각 실행 노드에 관한 자세한 내용은 실행 참조를 참고하세요.

이 정보를 사용하여 쿼리를 최적화하는 방법에 관한 자세한 내용은 쿼리 실행 최적화를 참고하세요.

다음은 실행 트리의 예입니다.

• Drop
|  fields to drop: [__$3__]
|  records returned: 0
|
└── • MajorSort
    |  fields: [__$3__ ASC]
    |  peak memory usage: 4.00 KiB (4,096 B)
    |  records returned: 0
    |
    └── • Extend
        |  expressions: [date_placed AS __$3__]
        |  records returned: 0
        |
        └── • Drop
            |  fields to drop: [__key__]
            |  records returned: 0
            |
            └── • Extend
                |  expressions: [_id(__key__) AS __id__]
                |  records returned: 0
                |
                └── • Filter
                    |  expression: $eq(user, 1,234)
                    |  records returned: 0
                    |
                    └── • TableScan
                           order: UNDEFINED
                           properties: * - { __create_time__, __update_time__ }
                           records returned: 0
                           records scanned: 0
                           source: (default)#/**/collection

다음 단계