일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- vavr
- Analyzer
- ann
- java
- Query
- elasticsearch cache
- api cache
- Docker
- TSLA
- redis
- Elastic
- Elasticsearch
- 아이온큐
- file download
- mysql
- aggs
- Cache
- 테슬라
- dbeaver
- IONQ
- java crawler
- Aggregation
- JPA
- aqqle
- NORI
- API
- 양자컴퓨터
- request cache
- Selenium
- KNN
- Today
- Total
아빠는 개발자
[es] replica 샤드가 많으면 검색성능이 좋아지는 이유는? - 이론편 본문
레플리카 샤드가 많으면 검색 성능이 좋아지는 이유는 다음과 같은 여러 가지 요인에 기인합니다:
1. 병렬 처리 증가
레플리카 샤드가 많으면, 동일한 데이터에 대해 여러 샤드가 동시에 검색 쿼리를 처리할 수 있습니다. 이는 병렬 처리를 증가시켜 전체 검색 시간을 줄여줍니다. 예를 들어, 3개의 프라이머리 샤드와 3개의 레플리카 샤드를 갖고 있다면, 총 12개의 샤드(3 프라이머리 + 9 레플리카)가 동시에 검색 쿼리를 처리할 수 있습니다.
2. 부하 분산
레플리카 샤드가 많으면 검색 요청이 클러스터 내 여러 노드로 분산됩니다. 이는 특정 노드에 검색 요청이 집중되는 것을 방지하고, 클러스터 전체에 부하를 고르게 분산시켜 각 노드의 성능을 최적화합니다. 부하 분산이 잘 되면, 개별 노드의 CPU 및 I/O 사용량이 균형을 이루어 전체 검색 성능이 향상됩니다.
3. 대기 시간 감소
레플리카 샤드가 많으면, 클라이언트 요청이 여러 샤드 중 하나에서 빠르게 응답될 가능성이 높아집니다. 즉, 요청이 가장 빠르게 응답할 수 있는 샤드에서 처리될 수 있으므로, 전체적인 대기 시간이 줄어듭니다. 이는 특히 클러스터의 노드가 지리적으로 분산되어 있거나, 특정 노드가 일시적으로 부하가 높을 때 효과적입니다.
4. 장애 복구 및 가용성
레플리카 샤드가 많으면, 일부 노드에 장애가 발생하더라도 여전히 검색 쿼리를 처리할 수 있는 샤드가 남아있습니다. 이는 클러스터의 가용성을 높여, 장애 상황에서도 검색 성능이 크게 저하되지 않도록 합니다.
5. 캐싱 효과
더 많은 샤드가 검색 쿼리를 처리하면서, 각 샤드의 캐시 메모리를 더 효율적으로 사용할 수 있습니다. 동일한 쿼리가 반복적으로 실행될 때, 샤드의 캐시 메모리에 데이터가 저장되어 검색 속도가 빨라질 수 있습니다.
요약
레플리카 샤드가 많으면 검색 성능이 좋아지는 이유는 병렬 처리 증가, 부하 분산, 대기 시간 감소, 장애 복구 및 가용성 증가, 그리고 캐싱 효과 때문입니다. 그러나 레플리카 샤드의 수를 적절하게 설정하는 것이 중요하며, 너무 많은 레플리카 샤드는 리소스 사용량을 증가시키고 인덱싱 성능에 부정적인 영향을 미칠 수 있으므로 신중한 균형이 필요합니다.