[MONGODB] MongoDB를 '카운트 ()'매우 느립니다. 우리는 어떻게 그것으로 주위에 / 작업을 수정합니까?
MONGODBMongoDB를 '카운트 ()'매우 느립니다. 우리는 어떻게 그것으로 주위에 / 작업을 수정합니까?
나는 현재 데이터 레코드의 수백만 MongoDB를 사용하고 있습니다. 나는 꽤 짜증 한 가지를 발견했다.
내가 쿼리 데이터 수집 적은 수의 '수 ()'기능을 사용하면 매우 빠른입니다. 조회 된 데이터 수집 데이터 레코드의 수천 또는 수백만 포함되어있는 경우에는, 전체 시스템이 매우 느리게된다.
내가 필요한 필드를 색인을 확인했다.
사람이 동일한 일이 발생 했습니까? 그걸 어떻게 개선해야합니까?
해결법
-
==============================
1.적절한 인덱스를 만드는 것보다 다른 최적화가 지금있다.
적절한 인덱스를 만드는 것보다 다른 최적화가 지금있다.
db.users.ensureIndex({name:1}); db.users.find({name:"Andrei"}).count();
일부 카운터가 필요하면 내가 때마다 수를 미리 계산하는 것이 좋습니다. 전혀 원자 $ INC의 동작 및 사용하지 않을 수 ({})를 사용함으로써.
그러나 MongoDB를 열심히 MongoDB를들, 그래서, 수 ({}) 개선 그들은 JIRA 버그에 따라 MongoDB를 2.1 계획이다.
-
==============================
2.당신은 인덱스가 정말 어떤 디스크 액세스없이 사용할 것을 보장 할 수 있습니다.
당신은 인덱스가 정말 어떤 디스크 액세스없이 사용할 것을 보장 할 수 있습니다.
하자 당신이 이름을 가진 레코드를 계산하고 싶은 말은 "안드레이을"
당신은 이름에 인덱스를 확인합니다 (당신이했던 것처럼) 과
db.users.find({name:"andrei"}, {_id:0, name:1}).count()
당신은 경우 확인하여 (미리 계산 제외) 계산하는 가장 빠른 방법이라는 것을 확인할 수 있습니다
db.users.find({name:"andrei"}, {_id:0, name:1}).explain()
사실에 index_only 필드 세트를 표시합니다.
이 트릭은 당신의 쿼리는 램 (인덱스)가 아닌 디스크에서 레코드를 검색 할 수 있도록 할 것이다.
-
==============================
3.나를 위해이 솔루션은 스파 스로 변경 지수이었다. 그것은 당신이 할 수있는 경우에 단지 한번 시도해, 특정 상황에 따라 달라집니다.
나를 위해이 솔루션은 스파 스로 변경 지수이었다. 그것은 당신이 할 수있는 경우에 단지 한번 시도해, 특정 상황에 따라 달라집니다.
db.Account.createIndex( { "date_checked_1": 1 }, { sparse: true } ) db.Account.find({ "dateChecked" : { $exists : true } }).count()
컬렉션의 318 개 수천 기록
-
==============================
4.당신은 MongoDB의에서 계산 지금은 행운의 거의 밖으로 끔찍 더 나은 가까운 미래에 점점되지 않습니다. 참조 : https://jira.mongodb.org/browse/SERVER-1752
당신은 MongoDB의에서 계산 지금은 행운의 거의 밖으로 끔찍 더 나은 가까운 미래에 점점되지 않습니다. 참조 : https://jira.mongodb.org/browse/SERVER-1752
매우 드물게 발생 한 시간 일이 뭔가, 또는 데이터베이스가 아주 작은 경우를 제외하고 경험에서, 당신은 그것을 사용하지 꽤 많이 안됩니다.
앤드류 Orsich가 언급 한 바와 같이, 사용 카운터 때마다 (에 관계없이 카운터에 몰락은 글로벌 쓰기 잠금이지만, 더 나은 수보다 ()) 가능합니다.
from https://stackoverflow.com/questions/7658228/mongodb-count-is-very-slow-how-do-we-refine-work-around-with-it by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] Node.js를 익스프레스 응답에 MongoDB를 커서에서 스트림 (0) | 2019.12.11 |
---|---|
[MONGODB] 한 번 MongoDB의 자바를 통해 여러 문서를 삽입하는 방법 (0) | 2019.12.11 |
[MONGODB] 몽구스 연결 오류 콜백이있다 (0) | 2019.12.11 |
[MONGODB] 어떻게 Node.js를에 약속 MongoDB를 사용 하는가? (0) | 2019.12.11 |
[MONGODB] 몽고 ObjectId가 직렬화 할 때 JSON.NET 오류 캐스팅 (0) | 2019.12.11 |