2012-08-27 2 views

답변

19

컬렉션에서 모든 문서를 제거하면 더 많은 작업을 수행 할 수 있습니다 (문서의 저장 공간 확보, 문서를 가리키는 색인 항목 지우기 등). 대신 컬렉션을 삭제하면 컬렉션 및 해당 인덱스에서 사용하는 범위 만 다시 계산됩니다.

다른 점은 컬렉션을 삭제하면 컬렉션의 인덱스도 삭제된다는 것입니다.

20

단순히 컬렉션을 삭제하는 것의 이점은 컬렉션의 모든 문서를 제거하는 것보다 훨씬 빠릅니다. 어쨌든 (인덱스 재 작성을 포함한다고 가정 할 때) 컬렉션이 "즉시 다시 생성"될 경우 이는 아마도 가장 매력적인 옵션 일 것입니다. 책 MongoDB: The Definitive Guide

저자 (크리스티나 초도 로우와 마이클 디 롤프는) 그들이 대 remove 1000000의 기록 drop을 초과 파이썬 스크립트를 제공하는 실험을 달렸다. 결과는 drop의 경우 0.01 초, remove의 경우 46.08 초입니다. 정확한 시간은 하드웨어 및 기타 요소에 따라 다를 수 있지만 그럼에도 불구하고 drop이 훨씬 더 빠릅니다.

참조 번호 : Chodorow K., Dirolf M. (2010). "MongoDB : The Definitive Guide."O'Reilly Media, Inc. Sebastapol, CA, pp.25

+5

대답에 +1 만, 삭제 대 드롭 하나주의해야 할 점, 그리고 당신이 분산됩니다 환경에있을 때 즉는 재사용에 관련된 다양한 버전에 비해 몇 가지 버그가 있었다 콜렉션 명 (또는 어떤 경우에는 접두사)을 삭제했습니다. 내가 아는 최신 관련 버그는 다음과 같습니다. https://jira.mongodb.org/browse/SERVER-4262 2.2에서 수정되었습니다. 방울/재 설계를 많이 계획하고 있다면 잘 알고 있어야합니다. . –

+0

팁 주셔서 감사합니다, @ AdamC! 나는이 시나리오가 혼합에서 샤딩/복제와 약간 까다로울 것이라고 생각한다. 집에서 실험실에 마스터/슬레이브 복제 구성을 설정해야합니다. – Aaron

1

컬렉션 제거 및 삭제는 대부분 구현 세부 사항입니다.

을 제거하려면 컬렉션에 내부 상태이 하나씩 업데이트되어 이 필요합니다.

컬렉션을 수집하려면 큰 데이터 구조이 데이터 파일의 데이터베이스 내에 있어야합니다.

컬렉션을 비우는 것은 컬렉션이 비어있을 때까지 하나씩 제거하는 것보다 훨씬 빠릅니다. 인덱스와 같은

메타 데이터 것이다 컬렉션이 제거 될 경우 오히려 그 떨어졌다 때보다 존재한다.

출처 : MongDB 대학 과정