계정 문서가 하나 있습니다. 이 문서는 ~ 1,000 석을 보유하고 있습니다. 각 좌석마다 우리는 의사를 방출합니다. 당연히이 속도가 느릴 것으로 예상됩니다. 지도 기능은 다음과 같이 실행됩니다.Couchdb 슈퍼 슬로우 뷰, 100 % cpu 사용
function(doc) {
if (doc.type == 'account') {
doc.seats.map(function(seat) {
emit(seat.userID, doc))
}
}
}
그러나 doc.seats를 삭제하면 훨씬 작은 문서를 내보내는 데 도움이되지 않았습니다.
function(doc) {
if (doc.type == 'account') {
doc.seats.map(function(seat) {
delete doc.seats
emit(seat.userID, doc))
}
}
}
왜 좌석을 삭제해도 속도가 향상되지 않는다고 이해하는 사람이 있습니까? 우리가 속도를 낼 수있는 유일한 방법은 doc 객체를 방출하지 않고 id를 내보내는 것입니다.
function(doc) {
if (doc.type == 'account') {
doc.seats.map(function(seat) {
emit(seat.userID, doc.id))
}
}
}
소파보기 맵에서 문서의 배열을 반복하는 데 문제가 있습니까?
원본 문서는 데이터 측면에서 99 % 좌석 배열입니다. 그래서 내가 그 배열을 뺀 문서를 방출한다면, 그것을 부양해서는 안 될까요? - 사실, 내 코드를 돌아 보면, 내가 생각하기에 삭제가 아마 작동하지 않을 것이다.map() method – Elliot
아, 나는 doc이 변하지 않는다고 생각한다. 내 업데이트를 참조하십시오. – sarwar