세그먼트 간 쿼리 실행 병렬화Parallelize Query Execution Across Segments
concurrent
옵션을 사용하면 쿼리 내 병렬 처리가 가능합니다. 이 모드에서 Atlas Search는 더 많은 리소스를 활용하지만 각 개별 쿼리 지연 시간을 개선합니다. 이 기능은 전용 검색 노드에서만 사용할 수 있습니다.
구문
concurrent
의 구문은 다음과 같습니다:
{ "$searchMeta"|"$search": { "index": "<index name>", // optional, defaults to "default" "<operator>": { <operator-specifications> }, "concurrent": true | false, ... } }
행동
concurrent
부울 옵션을 사용하면 Atlas Search에 요청하여 여러 세그먼트에서 쿼리 실행을 병렬화할 수 있습니다. 이렇게 하면 대부분의 경우 응답 시간이 향상됩니다. concurrent
옵션에 대해 다음 값 중 하나를 설정할 수 있습니다.
true
- 쿼리를 멀티스레드로 실행하도록 Atlas Search에 요청false
- 쿼리를 단일 스레드로 실행(기본값)
Atlas Search를 사용하면 쿼리별로 이 동작을 제어하여 사용량이 많고 오래 실행되는 쿼리에 대해서만 동시 실행을 활성화함으로써 경합을 최소화하고 전반적인 쿼리 처리량을 향상할 수 있습니다. 동시 실행은 대규모 데이터 세트에서 특히 효율적입니다. 세그먼트의 양이 많기 때문입니다.
제한 사항
concurrent
옵션을 사용하여 쿼리를 실행하는 경우 Atlas Search는 각 쿼리가 동시에 실행된다고 보장하지 않습니다. 예를 들어 대기 중인 동시 쿼리가 너무 많으면 Atlas Search가 단일 스레드 실행으로 대체될 수 있습니다.
예시
샘플 데이터의 sample_mflix.movies 컬렉션에 대한 다음 쿼리를 살펴보세요. 이 쿼리는 title
에 new york
이라는 텀이 포함된 영화에 대한 동시 검색을 나타냅니다.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "path": "title", 6 "query": "new york" 7 }, 8 "concurrent": true 9 } 10 } 11 ])