MongoDB Skip Limit 성능 이슈

dotoritos·2021년 11월 5일
0

MongoDB Skip Limit 성능 이슈

MongoDB에서 skip, limit를 사용하는 방식의 pagination에선 모든 데이터에 대한 세트를 구축하고 처음부터 지정된 오프셋까지 걸고 건너뛰는 방식으로 이루어 지기 때문에 오프셋이 증가되면 될수록 성능이 저하됩니다.

성능 예시 그래프

시도해본 해결법 1) mongoose-aggregate-paginate-v2 사용하기

kb.objectrocket.com/mongo-db/mongoose-pagination-with-nodejs-and-mongodb-1304

이 패키지는 pastel 서버의 createSession과 createAccessToken 부분에서 충돌을 일으킵니다.

저 패키지를 적용하지 않으면 올바르게 빌드 됩니다.

시도해본 해결법 2) Fast Paging

. skip을 사용하지 않았으며, 자동으로 부여되는 _id를 활용하는 방법.

//Page 1
db.users.find().limit(pageSize);
//Find the id of the last document in this page
last_id = ...

//Page 2
users = db.users.find({'_id'> last_id}). limit(10);

마지막으로 발견된 _id를 저장하여 다음 페이지를 가져올 때 활용하면 되지만
프론트에서 처리를 해줘야합니다.

profile
졸려

0개의 댓글