Docs Menu
Docs Home
/
MongoDB Cloud Manager
/ /

느린 쿼리 모니터링 및 개선

이 페이지의 내용

  • 프로젝트에 대한 Performance Advisor 활성화 또는 비활성화
  • 쿼리 속도가 느려지는 일반적인 이유
  • 인덱스 고려 사항
  • Performance Advisor 액세스
  • 인덱스 추천
  • 추천 색인 만들기

Performance Advisor는 MongoDB가 느리다고 간주 하는 쿼리 조건자를 사용하여 모든 작업을 모니터링하고 쿼리 성능을 개선하기 위해 새 인덱스 를 제안합니다. 선택한 호스트 및 기간에 대해 Performance Advisor는 로그에서 발견된 가장 최근의 느린 쿼리를 20 000 개 평가합니다.

권장 인덱스는 쿼리 형태별로 그룹화된 샘플 쿼리와 함께 제공됩니다. 이 샘플 쿼리는 추천된 인덱스의 혜택을 받을 컬렉션에 대해 실행됩니다. Performance Advisor는 Cloud Manager 클러스터 성능에 부정적인 영향을 미치지 않습니다.

쿼리 인사이트 를 사용하여 컬렉션 수준 쿼리 지연 시간 을모니터 할 수도 있습니다.

참고

Performance Advisor를 보려면 다음을 수행해야 합니다.

  • 클라우드 프리미엄 사용자가 됩니다.

  • 클러스터에서 MongoDB 버전 3.2 이상을 실행합니다.

  • MongoDB Agent 자동화로 클러스터를 관리합니다.

    MongoDB Agent에 대해 자세히 알아보려면 MongoDB Agent를 참조하세요.

예시 쿼리에서 필드 값을 보려면 다음 역할 중 하나 이상을 가진 Cloud Manager 사용자여야 합니다.

앞서 언급한 역할이 없는 사용자는 필드 값을 볼 수 없습니다.

중요

필수 권한

프로젝트에서 Performance Advisor를 활성화하려면 프로젝트에 대해 Project Owner 역할이 있어야 합니다.

Performance Advisor는 기본적으로 활성화되어 있습니다. Performance Advisor를 비활성화하거나 활성화하려면 다음을 수해합니다.

1
  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.

  3. Projects 메뉴 옆에 있는 Options 메뉴를 펼친 다음 Project Settings 를 클릭합니다.

    프로젝트 설정 페이지가 표시됩니다.

2

쿼리 속도가 느린 경우 일반적인 원인은 다음과 같습니다.

  • 현재 인덱스에서 쿼리가 지원되지 않습니다.

  • 컬렉션의 일부 문서에는 검색 및 인덱싱 비용이 큰 대형 배열 필드가 있습니다.

  • 하나의 쿼리는 $lookup 여러 컬렉션에서 정보를 검색합니다 .

인덱스가 읽기 성능을 향상시키기는 하지만, 다량의 인덱스는 쓰기 중에 인덱스가 업데이트되어야 하므로 쓰기 성능에 악영향을 미칠 수 있습니다. 컬렉션에 이미 인덱스가 여러 개 있다면 새 인덱스 생성 여부를 결정할 때 읽기 및 쓰기 성능의 균형을 잡을 방법을 생각해 보세요. 기존 인덱스를 활용하도록 해당 컬렉션에 대한 쿼리를 수정할 수 있는지, 그리고 쿼리가 새 인덱스의 비용을 충당할 수 있을 만큼 자주 발생하는지 여부를 검토하세요.

Performance Advisor는 불필요한 인덱스를 식별하고 제거하는 데 도움이 될 수 있습니다. 자세한 내용은 인덱스 제거 권장 사항 검토를 참조하세요.

Performance Advisor에 액세스하려면 다음을 수행합니다.

1
  1. 이미 표시되어 있지 않은 경우 탐색 모음의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.

  3. Deployment 페이지가 아직 표시되지 않은 경우 사이드바에서 Deployment를 클릭합니다.

    배포 페이지가 표시됩니다.

2

복제본 세트 가 샤딩된 클러스터 의 일부인 경우, 먼저 복제본 세트 세트가 포함된 샤딩된 클러스터 를 클릭합니다.

3
4

Performance Advisor 은 지난 24 시간 동안의 인덱스 권장 사항을 가져옵니다.

  • Performance Advisor 에 권장 사항이 있는 경우 Create Indexes 섹션에서 View Recommendations 버튼을 클릭합니다.

  • Performance Advisor 에 권장 사항이 없는 경우 지난 5 일까지의 인덱스 권장 사항을 조회하려면 Create Indexes 섹션에서 Explore Recommendations 를 클릭합니다.

은(는) 관련 작업에서 읽은 총 낭비된 바이트를 기준으로 에 Performance Advisor 따라 인덱스의 순위를 매깁니다. 인덱스 순위에 학습 Impact 보려면 인덱스 순위 검토를 참조하세요.

5

다음 옵션 중 하나를 사용하여 결과를 필터링합니다.

  • Filter by shards and hosts

  • Filter by namespace

  • Filter by time range

  • Filter by date and time

참고

느린 쿼리 로그에 집계 파이프라인의 연속된 $match 단계가 포함되어 있는 경우, 두 단계가 첫 번째 $match 단계로 합쳐져 단일 $match 단계가 될 수 있습니다. 그 결과, Performance Advisor의 쿼리 형태가 실행된 실제 쿼리와 다를 수 있습니다.

은(는) 관련 작업에서 읽은 총 낭비된 바이트를 기준으로 에 따라 Performance Advisor 인덱스의 순위를 매깁니다. Performance Advisor 가 인덱스 순위를 매기는 방법에 Impact 학습 보려면 인덱스 순위 검토를 참조하세요.

Performance Advisor가 추천하는 인덱스를 생성하는 방법을 알아보려면 추천 인덱스 생성을 참조하세요.

Performance Advisor가 추천하는 각 인덱스에는 다음 지표가 포함되어 있습니다. 이 지표는 특히 각 인덱스를 통해 개선될 쿼리에 적용됩니다.

메트릭
설명

Execution Count

개선 예정인 시간당 실행 쿼리 수.

Average Execution Time

영향을 받은 쿼리 대비 현재의 평균 실행 시간(단위: 밀리초).

Average Query Targeting

영향을 받은 쿼리에서 반환된 문서당 읽은 평균 문서 수입니다. 쿼리 대상 지정 점수가 높을수록 비효율성이 높다는 뜻입니다. 쿼리 대상 지정에 대한 자세한 내용은 쿼리 대상 지정을 참조하세요.

In Memory Sort

메모리에서 정렬되어야 하는 현재의 시간당 영향을 받은 쿼리 수.

Average Docs Scanned

평균 스캔 문서 수

Average Docs Returned

평균 반환된 문서 수입니다.

Avgerage Object Size

평균 객체 크기.

Performance Advisor는 각각의 추천 인덱스에 대해 가장 흔하게 실행된 쿼리 형태를 보여줍니다. 이 쿼리 형태는 해당 인덱스를 통해 개선됩니다. Performance Advisor는 각 쿼리 형태에 대해 다음 지표를 보여줍니다.

메트릭
설명

Execution Count

쿼리 형태와 일치하는 시간당 실행 쿼리 수.

Average Execution Time

쿼리 형태와 일치하는 쿼리의 평균 실행 시간(단위: 밀리초).

Average Query Targeting

쿼리를 일치시켜 반환된 모든 문서 대비 읽은 평균 문서 수입니다. 쿼리 대상 지정 점수가 높을수록 비효율성이 높다는 뜻입니다. 쿼리 대상 지정에 대한 자세한 내용은 쿼리 대상 지정을 참조하세요.

Average Docs Scanned

평균 스캔 문서 수

Average Docs Returned

평균 반환된 문서 수입니다.

이외에도 Performance Advisor는 쿼리 형태(해당 쿼리에 대한 특정 지표 포함)와 일치하는 각각의 실행 샘플 쿼리를 표시합니다.

각 인덱스 제안에는 인덱스의 해당 쿼리 형태에 대해 반환된 모든 문서에 대해 읽은 문서 수를 나타내는 Average Query Targeting 점수가 포함되어 있습니다. 1점은 읽은 모든 문서가 쿼리와 일치하고 쿼리 결과와 함께 반환되기 때문에 매우 효율적인 쿼리 형태를 나타냅니다. 제안된 모든 인덱스는 쿼리 성능을 향상시킬 수 있는 기회를 나타냅니다.

Performance Advisor는 기본적으로 배포 내 모든 클러스터에 대한 인덱스를 추천합니다. 특정 컬렉션의 추천 인덱스만 표시하려면 Collection Performance Advisor 상단에 있는 Collection(컬렉션) 드롭다운을 사용하세요.

Performance Advisor 상단의 Time Range(시간 Time Range 범위) 드롭다운을 사용해서 Performance Advisor가 인덱스 추천 시 염두에 둔 시간 범위를 조정할 수도 있습니다.

Performance Advisor는 ctime 타임스탬프 형식 을 사용하도록 구성된 MongoDB 데이터베이스에 대한 인덱스를 추천할 수 없습니다. 이 문제를 해결하려면 이러한 데이터베이스의 타임스탬프 형식을 iso8601-utc 또는 iso8601-local로 설정합니다.

Performance Advisor 자체 내에서 직접 Performance Advisor에서 제안하는 인덱스를 생성할 수 있습니다. 인덱스를 생성할 때는 대상 컬렉션에 대한 읽기 대 쓰기 비율을 염두에 둡니다. 인덱스를 만들면 성능 비용이 발생하지만, 대규모 데이터 세트를 자주 쿼리하는 경우에는 그만한 가치가 있습니다. 인덱싱 전략에 대해 자세히 알아보려면 인덱싱 전략을 참조하세요.

  • Performance Advisor를 통해서는 한 번에 하나의 인덱스만 만들 수 있습니다. 더 많은 항목을 동시에 생성하려면 데이터 탐색기 또는 을 사용하면 됩니다.

  • Cloud Manager는 항상 배포의 최상위 수준에서 인덱스를 생성합니다. Performance Advisor를 보면서 샤딩된 클러스터의 단일 샤드에 대해 인덱스를 생성할 경우, Cloud Manager는 샤딩된 클러스터 전체에 대해 해당 인덱스를 생성합니다.

추천 인덱스를 만들려면 다음과 같이 하세요:

1

Performance Advisor는 Create Index 대화상자를 열고 선택한 색인을 기반으로 Fields 를 미리 채웁니다.

2
{ <option1>: <value1>, ... }

예시

다음 옵션 문서는 인덱스에 대한 unique 옵션과 name을(를) 지정합니다.

{ unique: true, name: "myUniqueIndex" }
3

데이터 정렬을 사용하여 대소문자 및 악센트 표시 규칙과 같은 문자열 비교를 위한 언어별 규칙을 지정하세요. 데이터 정렬 문서에는 ICU 국가 및 언어 설정 코드를 나타내는 locale 필드가 포함되어 있으며, 데이터 정렬 동작을 정의하는 다른 필드가 포함될 수 있습니다.

예시

다음 데이터 정렬 옵션 문서에는 fr 프랑스어 데이터 정렬의 로캘 값이 (으)로 기재되어 있습니다.

{ "locale": "fr" }

MongoDB 데이터 정렬이 지원하는 국가 및 언어 설정 목록을 검토하려면 국가 및 언어 설정 목록을 참조하세요. 각 국가 및 언어 설정에 대해 기본적으로 활성화되는 것을 포함하여 데이터 정렬 옵션에 대해 자세히 알아보려면 MongoDB 매뉴얼에서 데이터 정렬을 참조하세요.

4

경고

중요한 문제 SERVER-68925 로 인해 특정 버전 의 MongoDB Agent 를 사용하는 Cloud Manager 배포는 다음 MongoDB 버전을 실행 하는 클러스터에서 자동 롤링 인덱스 빌드 를 수행해서는 안 됩니다.

  • MongoDB 4.2.19-4.2.22

  • MongoDB 4.4.13-4.4.16

  • MongoDB 5.0.6-5.0.11

  • MongoDB 6.0.0-6.0.1

클러스터에서 수동 롤링 인덱스 빌드를 계속 안전하게 수행할 수 있습니다. 자동화된 롤링 인덱스 빌드를 안전하게 수행하려면 MongoDB Agent를 12.4.0.7703 이상으로 업그레이드하거나 클러스터를 다음으로 업그레이드하세요.

  • MongoDB 4.2.23 이상 버전

  • MongoDB 4.4.17 이상 버전

  • MongoDB 5.0.12 이상 버전

  • MongoDB 6.0.2 이상 버전

중요

롤링 인덱스 빌드는 특정 조건을 충족하는 경우에만 성공합니다. 인덱스 빌드가 성공하게 하려면 다음과 같은 디자인 패턴을 사용하지 마세요. 이 패턴은 일반적으로 재시작 루프를 유발합니다.

참고

데이터 탐색기는 독립형 배포에 대해 롤링 방식으로 인덱스를 빌드하는 것을 지원하지 않습니다.

인덱스를 롤링 방식으로 구축하면 복제본 세트샤드 클러스터 에 대한 인덱스 구축이 성능에 미치는 영향을 줄일 수 있습니다. 클러스터 가용성을 유지하기 위해 Cloud Manager는 세컨더리 노드부터 시작하여 클러스터에서 한 번에 하나의 노드를 제거합니다.

롤링 방식으로 인덱스를 빌드한 후 MongoDB database 가 4.2 미만의 FCV 로 실행되는 경우 헤드 데이터베이스를 다시 동기화하여 헤드 데이터베이스 가 새 인덱스를 고려하도록 합니다.

Cloud Manager는 일부 노드에서 성공하지 못한 롤링 인덱스 빌드를 자동으로 취소합니다. 롤링 인덱스 빌드가 일부 노드에서는 완료되었으나 다른 노드에서 실패하면 Cloud Manager가 해당 빌드를 취소하고, 빌드에 성공한 임의의 노드에서 인덱스를 제거합니다.

롤링 인덱스 빌드가 취소될 경우 Cloud Manager는 활동 피드 이벤트를 생성하고, 다음 정보가 포함된 알림 이메일을 프로젝트 소유자에게 보냅니다.

  • 롤링 인덱스 빌드가 실패한 클러스터의 이름

  • 롤링 인덱스 빌드에 실패한 네임스페이스

  • 클러스터 및 네임스페이스가 포함된 프로젝트

  • 프로젝트가 포함된 조직

  • 활동 피드 이벤트 링크

인덱스 재작성에 대한 자세한 내용은 복제본 세트에 인덱스 빌드를 참조하세요.

참고

다음 인덱스 옵션은 롤링 방식으로 인덱스를 빌드하는 것과 호환되지 않습니다.

Options 창에서 옵션을 지정하면 Cloud Manager는 이러한 옵션을 무시합니다.

5
6

중요

인덱스 빌드가 완료된 경우 Cloud Manager는 활동 피드 이벤트를 생성하고 다음 정보가 포함된 알림 이메일을 프로젝트 소유자에게 보냅니다.

  • 인덱스 빌드 완료 날짜

  • 인덱스 빌드가 완료된 클러스터의 이름

  • 인덱스 빌드가 완료된 네임스페이스

  • Project containing the cluster and namespace

  • 프로젝트가 포함된 조직

  • 활동 피드 이벤트링크

돌아가기

느린 쿼리 분석