◆ 몽고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 |