[MongoDB] deleteMany 후 디스크 확보

이호정·2022년 10월 13일
0

MongoDB

목록 보기
2/2

네이버 블로그에서 이전, 원글 작성일시 : 2021.11.18.23:41

MongoDB를 이용해 프로젝트를 진행하며, 여러 우여곡절이 많았지만 그 중 삭제에 대한 얘기를 해보려 한다.

정제 작업을 빡세게 거치지 않고 Raw한 데이터를 일단 DB에 계속 때려박았기 때문에
용량은 계속 커져만 갔고, AWS 프리티어의 30GB를 넘어갈 지경까지 이르렀다.

장고 끝에 일정 데이터를 삭제하기로 결정하였고, 약 90%에 해당하는 데이터를 deleteMany로 삭제했다.

참고로 deleteMany 사용법은 아래와 같다.

// deleteMany의 입력파라미터로 조건을 붙여줄 수 있다.
db.{collection_name}.deleteMany({ 'name': 'something' })

입력파라미터에는 당연히도 여러 쿼리 연산자를 사용할 수 있다. ($exists 등)

문제는 실행 후다.

제대로 실행이 되었다는 출력도 확인했고, 실제로 남은 데이터의 카운트도 확인해보니 삭제는 잘 실행되었다.
하지만 용량은 그대로 차지하고 있었다.

22기가... 삭제하기 전의 용량이었다.

이에 여러방면으로 검색해봤는데,
삭제를 하게되면 삭제된 공간을 그대로 가지고 있다가
새로운 데이터가 그 공간으로 다시 채워진다고한다.(정확하진 않음)

해결방법을 찾아보던 중, 한 블로그에서 해결방법을 찾았다.

원인을 정확하게 파악하진 못했지만, 문제는 해결되었다.

삭제는 했지만 디스크 용량을 다시 돌려받지 못했을 때, mongo에서 아래 명령어를 실행하면 된다.

db.runCommand({compact: "collection_name", force: false})

실행이 잘 되었다고 한다.

확인해보자.


DB를 사용하면서 용량 문제를 현실적으로 겪어본적이 없기도 하지만,
당연하게 되어야 한다고 생각하는 부분들이 당연히 수행되지 않으니, 적잖이 당황했었다.
그래도 해결되어 다행이다.

참고 : [MongoDB]데이터 삭제 후 디스크 공간 돌려받기 및 속도향상

0개의 댓글