애플리케이션 에 가장 적합한 성능을 보장하기 위해 MongoDB 쿼리를 최적화합니다. 이는 개발 과정과 그 이후 모두에서 데이터 사용량과 수요가 변화함에 따라 발생할 수 있습니다. 컬렉션이 성장함에 따라 쿼리 성능을 주기적으로 검토 클러스터를 확장하다 또는 확장하다 해야 하는 시기를 결정하는 데 도움이 될 수 있습니다.
행동
MongoDB 에 쿼리 보내면 서버 쿼리 해석하고 쿼리 계획 세워 데이터를 가장 잘 조회 할 수 있는 방법을 결정하고 계획을 실행한 다음 결과를 클라이언트 에 반환합니다.
쿼리 성능을 개선하려면 MongoDB 특정 쿼리에 대한 계획을 구축하고 실행하는 방법을 고려하고 인덱스, 비효율적인 필터 및 확장하다 문제를 활용할 수 있는 필드와 같은 문제 영역을 식별합니다.
Indexes
인덱스는 개별 필드의 값이나 컬렉션 의 필드 집합을 별도의 데이터 구조에 저장 . 읽기 작업에서는 MongoDB 인덱스 를 검색 하여 전체 컬렉션 대신 관련 문서를 식별할 수 있습니다. 쓰기 (write) 작업에서 MongoDB 변경 사항을 컬렉션 에 쓰기 (write) 하고 인덱스 업데이트 .
대부분의 경우 인덱스를 사용하면 쿼리 속도를 높일 수 있습니다. 이 개선 사항은 인덱싱되는 필드와 쿼리가 필터에 사용하는 내용에 따라 달라집니다. 예시 들어 쿼리 프로젝션이나 필터를 적용하지 않는 경우 컬렉션 스캔 인덱스 스캔보다 더 효율적일 수 있습니다.
자세한 내용은 인덱스를 참조하세요.
작업
문제 해결
솔루션
세부 정보
Atlas 쿼리 프로파일러
Atlas 쿼리 프로파일러 클러스터 의 로그 데이터를 사용하여 느리게 실행되는 쿼리를 진단하고 모니터 도움이 됩니다. 쿼리 인사이트 인터페이스를 통해 성능 통계를 산점도 차트 로 집계, 필터링 및 시각화합니다.
이 시각화 데이터베이스 프로파일러보다 느린 쿼리 및 성능 이상값을 식별하는 데 더 편리할 수 있습니다.
쿼리 프로파일러 사용하면 애플리케이션 로드를 거시적으로 볼 수 있습니다. 이를 통해 느린 쿼리를 식별하고 다음과 같이 성능을 개선할 수 있는 방법에 대한 몇 가지 인사이트를 얻을 수 있습니다.
쿼리 실행 시간
쿼리 로 검사한 문서 수
쿼리 인덱스 사용하는지 여부
Database Profiler
데이터베이스 프로파일러 MongoDB 에서 실행 쿼리에 대한 자세한 정보를 수집하며, 이를 고정 사이즈 컬렉션 에 저장합니다.system.profile
중요
데이터베이스 프로파일러 데이터베이스 성능과 디스크 사용량에 영향을 줄 수 있습니다. 프로덕션 배포서버 에서 활성화하기 전에 성능 및 저장 미치는 영향을 고려하세요.
데이터베이스 프로파일러 사용하면 현재 애플리케이션 로드에서 느린 쿼리를 미시적으로 볼 수 있습니다. 이를 통해 다음과 같은 쿼리 성능을 개선할 수 있는 방법에 대한 몇 가지 인사이트를 얻을 수 있습니다.
쿼리 실행 시간
쿼리 로 검사한 문서 수
쿼리 인덱스 사용하는지 여부
설명합니다.
explain()
메서드는 쿼리 및 집계 파이프라인에 대한 쿼리 계획 정보와 실행 통계를 검색합니다. 다음 쿼리 메서드와 함께 사용할 수 있습니다.
explain()
메서드를 사용하면 다음과 같은 특정 쿼리의 잠재적인 문제를 식별할 수 있습니다.
비효율적인 필터
비효율적인 인덱스 사용
확장하다 의 잠재적 성능 문제
자세한내용은 느린 쿼리 설명을 참조하세요.
컬렉션 통계
$collStats
집계 단계에서는 특정 컬렉션 및 해당 컬렉션의 사용량에 대한 통계 정보를 제공합니다. 인덱스 및 성능 문제를 식별하는 데 유용할 수 있습니다.
이를 통해 다음과 같은 유용한 정보를 제공할 수 있습니다.
컬렉션 및 해당 인덱스의 스토리지 사용량
문서의 평균 크기
인덱스 통계
집계 단계에서는 컬렉션 별 인덱스 사용량에 대한 통계 정보를 제공합니다. 이를 통해 다음과 같은 특정 인덱스 사용 문제를 식별할 수 있습니다.$indexStats
쿼리에서 인덱스 사용 여부 및 빈도
인덱스 중복 여부