팁
MongoDB는 대량 쓰기 작업을 수행하기 위한 Mongo.bulkWrite() 메서드도 제공합니다.
설명
Bulk.insert(<document>)대량 작업 목록에 삽입 작업을 추가합니다.
Bulk.insert()는 다음 매개 변수를 허용합니다.Parameter유형설명doc문서
삽입할 문서. 문서 크기는 최대 BSON 문서 크기보다 작거나 같아야 합니다.
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
참고
This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.
행동
부정확한 삽입
삽입 중에 서버 오류가 발생하더라도 일부 문서가 삽입되었을 수 있습니다.
삽입에 성공하면 시스템에서 컬렉션에 삽입된 문서 수 을 반환합니다. 복제본 세트 상태 변경으로 인해 삽입 작업이 중단되면 시스템에서 문서 삽입을 계속할 수 있습니다. 따라서 실제 삽입된 문서보다 적은 수의 문서를 보고할 수 있습니다.
무작위 데이터에 대한 성능 고려 사항
작업에서 인덱싱된 필드에 대량의 임의 데이터(예시: 해시 인덱스)를 삽입하는 경우 삽입 성능이 저하될 수 있습니다. 무작위 데이터를 대량으로 삽입하면 무작위 인덱스 항목이 생성되어 인덱스 크기가 늘어납니다. 인덱스가 다른 인덱스 항목에 액세스하기 위해 각 무작위 삽입이 필요한 크기에 도달하면 삽입으로 인해 WiredTiger 캐시 제거 및 교체 비율이 높아집니다. 이 경우 인덱스가 더 이상 캐시에 완전히 저장되지 않고 디스크에서 업데이트되어 성능이 저하됩니다.
인덱싱된 필드에 무작위 데이터를 대량 삽입하는 성능을 개선하려면 다음 두 가지 방법을 사용할 수 있습니다.
인덱스를 제거한 다음 임의의 데이터를 삽입한 후 다시 생성합니다.
데이터를 인덱싱되지 않은 빈 collection에 삽입합니다.
대량 삽입 후 인덱스를 생성하면 메모리의 데이터가 정렬되고 모든 인덱스에 대해 정렬된 삽입이 수행됩니다.
예시
다음에서는 items 컬렉션의 Bulk() 작업 빌더를 초기화하고 여러 문서를 추가하기 위한 일련의 삽입 작업을 추가합니다.
var bulk = db.items.initializeUnorderedBulkOp(); bulk.insert( { item: "abc123", defaultQty: 100, status: "A", points: 100 } ); bulk.insert( { item: "ijk123", defaultQty: 200, status: "A", points: 200 } ); bulk.insert( { item: "mop123", defaultQty: 0, status: "P", points: 0 } ); bulk.execute();