문서 메뉴
문서 홈
/
MongoDB Atlas
/ /

느린 쿼리 모니터링 및 개선

이 페이지의 내용

  • 쿼리 속도가 느려지는 일반적인 이유
  • 필요한 액세스 권한
  • 느린 쿼리 임계값 구성하기
  • 인덱스 고려 사항
  • Performance Advisor 액세스
  • 인덱스 추천
  • 추천 색인 만들기

M10+ 클러스터 및 서버리스 인스턴스에서만 사용 가능

Performance Advisor는 MongoDB가 느리다고 판단한 쿼리를 모니터링하고 쿼리 성능을 향상시키기 위해 새 인덱스를 추천합니다. 느린 쿼리에 대한 임곗값은 워크로드와 관련 있는 권장사항을 제공하기 위한 클러스터의 평균 작업 시간에 따라 달라집니다.

추천 인덱스에는 쿼리 형태로 분류된 샘플 쿼리가 함께 제공되는데, 이는 추천 인덱스의 혜택을 받을 수 있는 collection에 대해 실행됩니다. Performance Advisor는 Atlas 클러스터의 성능에 악영향을 미치지 않습니다.

네임스페이스 인사이트사용하여 컬렉션수준 쿼리 지연 시간 을 모니터링하고 쿼리 프로파일러를 사용하여 쿼리 성능을 모니터링할 수도 있습니다.

참고

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

쿼리가 느린 collection을 보고 추천 인덱스를 보려면 프로젝트에 대한 Project Read Only 이상의 액세스 권한이 있어야 합니다.

Performance Advisor의 샘플 쿼리에서 필드 값을 보려면 프로젝트에 대한 Project Data Access Read/Write 이상의 액세스 권한이 있어야 합니다.

느린 Atlas 관리형 작업 임곗값을 활성화하거나 비활성화하려면 프로젝트에 대해 Project Owner 액세스 권한이 있어야 합니다. Organization Owner 액세스 권한이 있는 사용자는 프로젝트에 자신을 Project Owner로 추가해야 합니다.

기본적으로 Atlas는 클러스터 전체의 작업 실행 시간을 기준으로 느린 쿼리 임곗값을 동적으로 조정합니다. 하지만 이 기능을 비활성화하고 느린 고정형 쿼리 임곗값(100밀리초)을 대신 사용할 수 있습니다. 느린 Atlas 관리형 작업 임곗값은 Atlas CLI, Atlas Administration API 또는 Atlas UI로 비활성화할 수 있습니다.

참고

Atlas Search가 된 활성화Atlas 클러스터는 느린 Atlas 관리형 쿼리 작업 임곗값을 지원하지 않습니다.

M0, M2, M5 cluster 및 서버리스 인스턴스의 경우 Atlas는 디폴트로 느린 Atlas 관리형 쿼리 작업 임계값을 비활성화합니다. 사용자는 이 값을 활성화할 수 없습니다.

중요

기본적으로 Atlas는 클러스터 전체의 작업 실행 시간을 기준으로 느린 쿼리 임곗값을 동적으로 조정합니다. 느린 Atlas 관리형 쿼리 임곗값을 비활성화하면 해당 값이 더 이상 동적으로 조정되지 않습니다. MongoDB는 기본적으로 느린 고정형 쿼리 임곗값을 100밀리초로 설정합니다. 느린 고정형 쿼리 임곗값은 100밀리초보다 적게 설정하지 않는 것이 좋습니다.

느린 Atlas 관리형 작업 임곗값을 비활성화하고 고정형 임곗값을 100밀리초로 사용하려면 다음 방법대로 하세요.

Atlas는 느린 Atlas 관리형 작업 임곗값을 기본적으로 활성화합니다. 이전에 비활성화한 느린 Atlas 관리형 작업 임곗값을 다시 활성화하려면 다음 방법대로 하세요.

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

Performance Advisor 는 Performance Advisor 클러스터의 collection 전체에서 쿼리 형태를 최대 20개와 해당 쿼리 형태에 대한 추천 인덱스를 표시합니다. Performance Advisor 값은 Impact에 따라 인덱스 순위를 매깁니다. 이는 읽은 총 낭비 바이트를 기준으로 High 또는 Medium 나타냅니다. 인덱스 순위에 대해 자세히 알려면 Review Index Ranking을 참조합니다.

Performance Advisor는 읽은 낭비된 총 바이트 수를 기준으로 High 또는 Medium을 나타내는 해당 Impact에 따라 제안하는 색인의 순위를 매깁니다. 성과 관리자가 인덱스 순위를 매기는 방법에 대해 자세히 알아보려면 인덱스 순위 검토를 참조하세요.

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

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

메트릭
설명
Execution Count
개선 예정인 시간당 실행 쿼리 수.
Average Execution Time
영향을 받은 쿼리 대비 현재의 평균 실행 시간(단위: 밀리초).
Average Query Targeting
영향을 받은 쿼리에서 반환된 문서당 읽은 평균 문서 수입니다. 쿼리 타겟팅 점수가 높을수록 비효율성이 높다는 의미입니다. 쿼리 타겟팅에 대한 자세한 내용은 쿼리 타겟팅을 참조하세요 .
In Memory Sort
메모리에서 정렬되어야 하는 현재의 시간당 영향을 받은 쿼리 수.
Average Docs Scanned
평균 스캔 문서 수
Average Docs Returned
평균 반환된 문서 수입니다.
Average 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 로 설정합니다. 타임스탬프 형식에 대해 자세히 알아보려면 mongod --timeStampFormat을 참조하세요.

Performance Advisor는 클러스터의 최신 로그 행을 최대 20만 개까지 분석합니다.

만약 클러스터에 활동 급증해 매우 많은 양의 로그 메시지가 생성될 경우, Atlas는 일정 기간 동안 새로운 로그의 수집 및 저장을 중단할 수 있습니다.

참고

로그 분석 속도 제한은 Performance Advisor UI, 쿼리 인사이트 UI, 액세스 추적 UI 및 Atlas Search 쿼리 분석 UI에만 적용됩니다. 다운로드 가능한 로그 파일 은 항상 완전한 상태로 유지됩니다.

Performance Advisor는 time series 컬렉션에 대한 성능 추천을 제공하지 않습니다.

Performance Advisor에는 Index Suggestions(인덱스 추천)을 위한 사용자 피드백 버튼이 있습니다. 이 버튼은 서버리스 인스턴스의 경우 Atlas에서 숨겨집니다.

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

  • 프로젝트에 대해 데이터 탐색기 가 비활성화되어 있는 경우 Performance Advisor를 통해 인덱스를 생성할 수 없습니다. Performance Advisor 권장 사항을 계속 볼 수는 있지만 mongosh 에서 해당 인덱스를 생성해야 합니다.

  • Performance Advisor를 통해서는 한 번에 하나의 인덱스만 만들 수 있습니다. 더 많은 인덱스를 동시에 생성하려면 Atlas UI, 드라이버 또는 을 사용하면 됩니다.

  • Atlas는 항상 전체 클러스터에 대한 인덱스를 생성합니다. Performance Advisor를 보면서 샤드 클러스터의 단일 샤드에 대해 인덱스를 생성하는 경우, Atlas는 샤드 클러스터 전체에 대해 해당 인덱스를 생성합니다.

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

1

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

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

예제

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

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

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

예제

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

{ "locale": "fr" }

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

4

중요

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

참고

Atlas UI는 M0 무료 클러스터 및 M2/M5 공유 클러스터에 대한 롤링 빌드를 이용한 인덱스 구축을 지원하지 않습니다. 서버리스 인스턴스에 대한 롤링 빌드로 인덱스를 구축할 수는 없습니다.

인덱스 빌드로 인한 성능 저하를 감당할 수 없는 워크로드의 경우에는 롤링 방식으로 인덱스를 구축하는 것이 좋습니다.

cluster 가용성을 유지하려면

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

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

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

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

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

  • 프로젝트가 포함된 조직

  • 활동 피드 이벤트링크

인덱스 재구축에 대해 자세히 알아보려면 복제본 세트에서 인덱스 빌드를 참조하세요.

참고

고유한 인덱스 옵션 은 롤링 방식으로 인덱스를 빌드하는 것과 호환되지 않습니다. Options 창에 unique 을 지정하면 Atlas에서 오류 메시지와 함께 구성을 거부합니다.

5
6

중요

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

  • 인덱스 빌드 완료 날짜

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

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

  • Project containing the cluster and namespace

  • 프로젝트가 포함된 조직

  • 활동 피드 이벤트링크

← 느린 쿼리 분석