2021.08.17



Question


AWS DocumentDB에서 쿼리 실행시 CPU 부하가 발생하였지만 EC2에 설치된 MongoDB에서는 부하가 발생하지 않았습니다.


비슷한 성능의 리소스를 할당하였지만 성능 차이가 심하게 발생하는 이유가 무엇인가요?






Answer


먼저 DocumentDB에는 "MongoDB 호환성"이 있으며 이 호환성은 현재 MongoDB 데이터베이스와 함께 이미 사용하고 있는 대부분의 애플리케이션, 드라이버 및 도구를 변경 없이 Amazon DocumentDB와 함께 사용할 수 있음을 의미합니다.
그러나 DocumentDB는 MongoDB와 동일하지 않으며 두 엔진 모두 알고리즘과 최적화 방법이 다르기 때문에 관찰된 성능에 차이가 있을 수 있습니다.


그렇기 때문에 DocumentDB의 최적화를 구현하는 모범 사례를 참고하여 DocumentDB를 최적화 하여 이용하시는것이 좋습니다.


#1. Amazon DocumentDB 에 대한 모범 사례
- https://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/best_practices.html

#2. 쿼리 계획을 보고 쿼리를 최적화하려면 어떻게 해야 합니까?
- https://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/user_diagnostics.html#user_diagnostics-query_plan

#3. 하나 이상의 클러스터 인스턴스에서 높은 CPU 사용률의 원인을 어떻게 확인합니까?
https://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/user_diagnostics.html#user_diagnostics-cpu_utilization

추가적으로 Amazon DocumentDB는 자체 서비스를 위해 RAM의 1/3을 예약합니다.
즉, 인스턴스 RAM의 2/3만 캐시에 사용할 수 있습니다.

따라서 메모리의 작업 세트(즉, 데이터 및 인덱스)에 맞게 RAM이 충분한 인스턴스 유형을 선택하는 것이 Amazon DocumentDB 모범 사례입니다.
적절한 크기의 인스턴스를 사용하면 전체 성능을 최적화하고 I/O 비용을 잠재적으로 최소화하는 데 도움이 됩니다.