index
[성능개선] MongoDB 쿼리 최적화로 30% 성능 향상시키기: batchSize와 쿼리 조건 개선
저는 그동안 RDBMS나 Elasticsearch처럼 익숙한 시스템들을 주로 다뤄왔고, MongoDB는 이번 프로젝트에서 처음 사용하게 되었는데요. 이 MongoDB는 실제 서비스에 등록된 사용자 데이터를 비롯한 여러 데이터들을 보관하는 용도로 사용되고 있습니다.로그수집기내에서는 이 데이터를 조회해 메모리에 캐시(Map 형태)로 적재해두고, 이후 수집된 로그 파일들에서 특정 필드를 기준으로 MongoDB의 데이터를 조인하듯 매핑해 메타데이터를 추가합니다. 그렇게 가공된 로그는 Kafka → Logstash → Elasticsearch로 이어지는 파이프라인을 타게 됩니다. MongoDB는 여기서 메타데이터의 원천 역할을 하고 있는 셈입니다. 이 캐시 적재 작업은 매일 새벽 한 번 실행되고 있었고, 수년간 ..
DB Index란?
기존에도 인덱스가 조회 성능 개선에 도움이 된다는 것은 이론적으로 알고 있었다.하지만 이번 사내 기능 개선 작업을 통해 직접 인덱스를 설계하고 적용하여, 실질적으로 성능을 개선한 것은 처음이었다.특정 조건에 따라 데이터를 조회하는 쿼리 속도가 예상보다 느렸고, 원인 분석 중 인덱스 최적화 필요성을 확인했다.적용 후, 쿼리 응답 속도가 확연히 개선되는 것을 직접 경험할 수 있었다.본론으로 들어가 어떠한 구조인지 한번 봐보자!B-Tree(Balanced Tree 균형 트리)자료구조에서 범용적으로 사용되는 데이터 구조, 인덱스만을 위한 표현은 아니고 여러곳에서 쓰인다. 말 그대로 균형 잡힌 트리를 의미이미지에서 언급되는 노드란 트리구조에서 존재하는 공간을 의미함.노드에 해당하는 것이 페이지인데 페이지는 16k..