본문 바로가기

DATABASE/Mongo DB

05. Mongo DB 데이터 삭제

몽고DB에서 삭제는 delete() 사용해서 컬렉션 내부의 데이터를 삭제 할 수 있습니다.

 - 데이터의 삭제 방법은 아래와 같습니다.

 - 하지만 실제 물리적인 공간은 확보되지 않습니다.

db.collection.remove(
    <query>
)


// 명령 실행 예시
db.test.remove({ sid: 's0000' }); 

// 조건 없이 모든 데이터 삭제
db.test.remove({ }); 

MongoDB의 불필요한 데이터 삭제는 remove()를 통해 수행하나 삭제된 공간은 실제 디스크에 반납되지 않는다.

 

 실제 물리적인 디스크 공간을 확보하기 위해서는 ?

1. 첫번째 방법 ( repairDatabase )

 - db.repairDatabase() 명령 수행 

 - 명령 수행 시간이 길며, 명령이 수행되는 동안 다른 작업을 할 수 없기 때문에 서비스가 불가합니다.

 - 특정 db가 아닌, 전체를 repair 수행

 - 현재 MongoDB가 사용중인 disk 사이즈와 같은 크기 또는 1.5배의 디스크 가용공간이 필요함

 

// 명령 수행 예시
db.repairDatabase() 

내부적인 수행순서 
 1 mongoexport -> tmp생성 
 2 temp에 mongoimport 
 3 기존disk삭제 -> temp를 disk로 이전" 따라서 temp공간을 위한 여유공간이 필요하다. 

 

2. 두번째 방법 ( compact )

 - MongoDB ver.2 이상에서는 compact()라는 명령이 지원됨.

 - collection만을 수행가능한 것으로 디스크에 대한 조각모임과 같은 개념으로 수행속도를 빠르게 해준다

 - 물리적인 가용공간을 반납하지 않음

-- 전체컬렉션 수행 시 
db.getCollectionNames().forEach(function (collectionName) { print('Compacting: ' + collectionName); db.runCommand({ compact: collectionName });});

-- 대용량 또는 단일 컬렉션 수행 시
> db.runCommand( { compact : "컬렉션이름." } )
{ "ok" : 1 }

 

출처: odguy]

'DATABASE > Mongo DB' 카테고리의 다른 글

04.Mongo DB 모니터링  (0) 2019.12.26
03. Mongo DB - Commend 활용 / 계정 생성  (0) 2019.12.26
02. Mongo DB 서비스 등록 ( centos )  (0) 2019.12.26
01. Cent OS Mongo DB 설치  (0) 2019.12.26
00.No SQL 데이터베이스  (0) 2019.11.21