일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- elasticsearch cache
- aggs
- NORI
- dbeaver
- 테슬라
- Selenium
- Docker
- Aggregation
- api cache
- Query
- java crawler
- IONQ
- Elasticsearch
- file download
- java
- vavr
- redis
- aqqle
- JPA
- Cache
- Elastic
- 양자컴퓨터
- ann
- 아이온큐
- request cache
- mysql
- Analyzer
- TSLA
- KNN
- API
Archives
- Today
- Total
아빠는 개발자
[es] Shard 와 검색 성능 - 이론편 본문
728x90
반응형
Elasticsearch에서 샤드(Shard)는 인덱스를 분할하여 데이터 분산 저장과 병렬 처리를 가능하게 하는 단위입니다. 샤드의 개수가 검색 성능에 미치는 영향은 다양한 요소에 따라 달라질 수 있습니다.
샤드가 많을 때의 이점
- 병렬 처리: 더 많은 샤드는 검색 쿼리를 병렬로 처리할 수 있는 기회를 제공합니다. 이는 특히 클러스터 내 여러 노드가 있을 때 검색 성능을 향상시킬 수 있습니다.
- 데이터 분산: 데이터를 더 세분화하여 분산 저장할 수 있으므로, 각 샤드에 저장된 데이터 양이 적어지고 개별 샤드의 검색 속도가 빨라질 수 있습니다.
- 리소스 활용: 클러스터의 리소스를 더 효과적으로 활용할 수 있습니다. 특히 여러 노드에 걸쳐 데이터가 분산될 때, 각 노드의 CPU 및 메모리 사용을 최적화할 수 있습니다.
샤드가 많을 때의 단점
- 오버헤드: 너무 많은 샤드는 클러스터 관리와 운영 오버헤드를 증가시킵니다. 각 샤드에는 파일 핸들러, 메모리 버퍼 등이 필요하므로 리소스 사용량이 늘어납니다.
- 네트워크 트래픽: 많은 샤드는 노드 간 통신을 증가시킬 수 있으며, 이는 네트워크 트래픽과 대기 시간을 늘려 성능 저하를 초래할 수 있습니다.
- 인덱싱 성능 저하: 너무 많은 샤드는 인덱싱 성능에 부정적인 영향을 미칠 수 있습니다. 모든 샤드에 동시에 데이터를 기록해야 하므로, 병목 현상이 발생할 수 있습니다.
최적의 샤드 수 결정
최적의 샤드 수는 다음과 같은 요소를 고려하여 결정해야 합니다:
- 데이터 양: 인덱스의 크기와 예상되는 데이터 증가량을 고려해야 합니다. 일반적으로 각 샤드 크기가 10-50GB를 넘지 않는 것이 좋습니다.
- 클러스터 노드 수: 노드 수에 맞게 샤드 수를 조정해야 합니다. 일반적으로 하나의 노드가 담당할 수 있는 샤드 수는 리소스(CPU, 메모리)에 따라 다릅니다.
- 쿼리 패턴: 쿼리 패턴에 따라 샤드 수를 최적화해야 합니다. 검색 쿼리가 자주 발생하는 경우 병렬 처리가 중요하지만, 인덱싱 작업이 많은 경우 샤드 수를 적절히 조절해야 합니다.
- 리소스 제한: 클러스터의 CPU, 메모리, 디스크 I/O 등의 리소스 제한을 고려해야 합니다. 샤드 수가 너무 많으면 리소스가 분산되어 오히려 성능이 저하될 수 있습니다.
결론
샤드 수는 검색 성능에 중요한 영향을 미치며, 샤드 수를 늘리는 것이 항상 성능 향상을 보장하지는 않습니다. 최적의 샤드 수를 결정하기 위해서는 데이터 양, 클러스터 구성, 쿼리 패턴 및 리소스 제한 등을 종합적으로 고려해야 합니다. 샤드를 너무 많이 설정하면 오버헤드와 네트워크 트래픽이 증가할 수 있으므로, 적절한 균형을 찾는 것이 중요합니다.
728x90
반응형
'Elastic > elasticsearch' 카테고리의 다른 글
[es] Elasticsearch data node 의 shard 정보 (0) | 2024.08.01 |
---|---|
[es] data node cpu 튀는 현상 (0) | 2024.08.01 |
[es] elasticsearch 검색엔진 동작 (0) | 2024.07.28 |
[es] 엘라스틱서치 샤드 최적화 (0) | 2024.06.29 |
[es] nested 구조에서 aggregation 하기 - 성능테스트 (0) | 2024.05.02 |