programing

연산자 성능에서 Mongo $

instargram 2023. 5. 22. 20:18
반응형

연산자 성능에서 Mongo $

사용 속도가 느리거나 불량한 형태입니까?$inMongoDB의 운영자는 많은 가능성을 가지고 있습니까?

posts.find({
    author : {
        $in : ['friend1','friend2','friend3'....'friend40'] 
    }
})

예를 들어 앱 엔진은 IN 배열의 항목당 하나의 쿼리로 바로 변환되므로 30개 이상을 사용할 수 없으며 대신 팬 아웃 처리 방법을 사용하도록 강제합니다.그것이 Mongo에서도 가장 효율적인 방법일 수 있지만, 코드가 훨씬 더 복잡하기 때문에 저는 그냥 이 일반적인 방법을 사용하고 싶습니다.

Mongo가 이것들을 실행할까요?$in적절한 크기의 데이터셋을 효율적으로 조회할 수 있습니까?

작은 목록(작은 것이 무엇인지 말하기 어렵지만 적어도 수십/수백 개)을 사용하면 상당히 효율적일 수 있습니다.$inmongodb는 실제 btree 인덱스를 가지고 있고 큰 테이블과 같은 컬럼 스토어가 아니기 때문에 앱 엔진처럼 작동하지 않습니다.

와 함께$in일치하는 문서를 찾기 위해 색인에서 건너뛰거나, 사용할 색인이 없는 경우 전체 모음을 차례로 이동합니다.

에서 인덱스를 생성했다고 가정합니다.author필드, 알고리즘 관점에서, 시간 복잡도$in작업:$(N*log(M)),어디에N입력 배열의 길이입니다.M컬렉션의 크기입니다.

의 시간 복잡성$in데이터베이스를 변경하지 않으면 작업이 변경되지 않습니다(비록 어떤 DB도 파손될 수 없다고 생각하지만).O(N*log(M))).

그러나, 공학적 관점에서, 만약N비즈니스 로직 서버가 시뮬레이션을 수행할 수 있도록 하는 것이 좋습니다.$in배치별 또는 하나씩 작업.

이는 데이터베이스 서버의 메모리가 비즈니스 로직 서버의 메모리보다 훨씬 더 가치 있기 때문입니다.

인덱스를 작성하는 경우(확인)목록 요소에서 인덱스)는 상당히 빠를 것입니다.

사용해 보셨습니까?explain()http://www.mongodb.org/display/DOCS/Indexing+Advice+and+FAQ#IndexingAdviceandFAQ-Use%7B%7Bexplain%7D%7D 에서 질문을 프로파일링할 수 있는 좋은 기본 제공 방법입니다.

언급URL : https://stackoverflow.com/questions/4955160/mongo-in-operator-performance

반응형