집계 파이프라인 제한
aggregate
명령을 사용한 집계 작업에는 다음과 같은 제한 사항이 있습니다.
결과 크기 제한
aggregate
명령은 커서를 반환하거나 결과를 collection에 저장할 수 있습니다. 결과 집합의 각 문서에는 16메가바이트 BSON 문서 크기 제한이 적용됩니다. 단일 문서가 BSON 문서 크기 제한을 초과하는 경우, 집계 시 오류가 발생합니다. 이 제한은 반환된 문서에만 적용됩니다. 파이프라인 처리 중에 문서가 이 크기를 초과할 수 있습니다. db.collection.aggregate()
메서드는 기본적으로 커서를 반환합니다.
단계 수 제한
MongoDB는 단일 파이프라인에서 허용되는 집계 파이프라인 단계 수를 1000 로 제한합니다.
집계 파이프라인이 구문 분석 전후에 단계 제한을 초과하면 오류가 발생합니다.
메모리 제한
MongoDB 6.0부터 allowDiskUseByDefault
매개변수는 실행에 100메가바이트 이상의 메모리가 필요한 파이프라인 단계에서 기본적으로 디스크에 임시 파일 쓰기를 수행할지 여부를 제어합니다.
allowDiskUseByDefault
를true
로 설정하면 실행하는 데 100메가바이트 이상의 메모리가 필요한 파이프라인 단계에서는 기본적으로 임시 파일을 디스크에 씁니다.{ allowDiskUse: false }
옵션을 사용하여 특정find
또는aggregate
명령에 대해 디스크에 임시 파일 쓰기를 비활성화할 수 있습니다.allowDiskUseByDefault
를false
로 설정하면 실행하는 데 100메가바이트 이상의 메모리가 필요한 파이프라인 단계는 기본적으로 오류가 발생합니다.{ allowDiskUse: true }
옵션을 사용하여 특정find
또는aggregate
에 대한 임시 파일을 디스크에 쓸 수 있도록 설정할 수 있습니다.
$search
애그리게이션 단계는 별도의 프로세스에서 실행되므로 100 메가바이트의 RAM으로 제한되지 않습니다.
허용 디스크 사용이 true
일 때 디스크에 임시 파일을 쓸 수 있는 단계의 예시는 다음과 같습니다.
$sort
인덱스에서 정렬 작업을 지원하지 않는 경우
참고
파이프라인 단계는 각 파이프라인 단계가 문서를 가져와 처리한 다음 결과 문서를 출력하는 문서 스트림에서 작동합니다.
일부 단계에서는 들어오는 문서를 모두 처리할 때까지 문서를 출력할 수 없습니다. 이러한 파이프라인 단계는 들어오는 모든 문서가 처리될 때까지 단계 출력을 RAM에 보관해야 합니다. 따라서 이러한 파이프라인 단계에는 100MB 제한보다 더 많은 공간이 필요할 수 있습니다.
$sort
파이프라인 단계 중 하나의 결과가 한도를 초과하는 경우 $limit 단계를 추가하는 것을 고려하세요.
프로파일러 로그 메시지 및 진단 로그 메시지에는 메모리 제한으로 인해 집계 단계에서 임시 파일에 데이터를 쓴 경우 usedDisk
표시기가 포함됩니다.