본문 바로가기
DB, MW

MongoDB 속도 개선

by wahu 2020. 3. 20.

네이버 검색에서 몽고 DB

FAST + SCALABLE + HIGHLY AVAILABLE = MongoDB

* 하위 레이어... 최종적으로... - 1초안에 return 해주어야 함 = 평균 10ms 미만

* 초당 6천건 수준.. 일 평균 4~5언건. 몽고 DB 초당 만건 이상

 

몽고DB 속도 올리기 - Index

* MongoDB는 컬렉션 당 최대 64개의 인덱스만 생성 가능

* 너무 많은 인덱스를 추가하면, 오히려 side effects가 발생한다.

* Frequent Swap -> 몽고DB는 인데스를 메모리에 올려놓음.

* Write Performance 감소 -> Read Performance에 영향 

 

Index Prefix를 사용하자 => !!   

sorting 순서 맞추자!

 

하나의 컬렉션이 너무 많은 문서를 가질 경우, 인덱스 사이즈가 증가하고 인덱스 필드의 cardinality가 낮아질 가능성이 높다.

이는 lookup per

한 컬렉션에 너무 많은 문서가 있으면 반스디 컬렉션을 나눠서 query process..

 

쓰레드를 이용해 대량의 Document upsert

 

non-blocking secondary read기능

 

미운 인덱스

인덱스가 너무 많으면 쿼리 플래너가 어떤 인덱스를 선택해야 할 지 몰라서 오히려 느려지는 경우가 있다.

explain 해보기 key exmined 8000,9000건 이하로 유지해야함. hint옵션 - 강제로 인덱스를 태우는 옵션!!!!

 

db.concert.count({

serviceCode: {$in: [2,3]},
startDate: {$lte: 20190722},
endDate: {$gte: 20190722},

{hint: "serviceCode_1_startDate_1_endDate_e_1"}

 

Backgroud Index

몽고DB는 인덱스를 생성할 때 해당 컬렉션이 포함된 DB에 lock 이 걸린다.

 

Compact

디스크 공간 확보 - 메인터넌스 기간에만 ..수행

 

Balancer

Chunk Migration

 

Clustered Index

Clustered Index가 없어서, Clustered Index 활용 X

 

Unique Index

인덱스가 local 기반이라, 각 shard 별로 유니크 함

 

AuthenticationRestrictions 기능 사용 ..

 

'DB, MW' 카테고리의 다른 글

[DB] Primary Key 이란?  (0) 2021.12.02
[Kafka] 카프카 옵션 셋팅  (0) 2020.03.04
[Kafka] 커밋과 오프셋  (0) 2020.03.03
카프카(kafka) docker 설정  (0) 2020.02.28

댓글