数据空洞指的是,一个表经历了频繁的update和delete后,其数据文件的尺寸大于其数据实际尺寸。比如show dbs
看到一个库为400G,导出再导入后就只有250G。
PHP中文网2017-04-22 08:58:10
내보낸 다음 가져올 필요가 없습니다. repairDatabase
또는 compact
을 사용하면 데이터가 압축됩니다. 그러나 작동 중 성능에는 영향을 미칩니다.
repairDatabase 명령은 데이터베이스의 모든 컬렉션을 압축합니다. 이는 각 컬렉션에 대해 개별적으로 압축 명령을 실행하는 것과 동일합니다.
compact
은 repairDatabase
처럼 신청된 디스크 공간을 해제하지 않지만, 새로운 디스크 요청은 할당된 공간을 사용한다는 점에 유의하세요. 주목해야 할 또 다른 점은 두 명령 모두 추가 공간이 필요하다는 것입니다. 딕 사용법 섹션을 참조하십시오. 즉, 디스크 공간이 가득 차면 이 두 명령이 사용되지 않습니다. 그러나 이때 슬레이브 노드를 다시 동기화하고 디스크 데이터를 재구성할 수 있습니다.
레플리카 세트에서 repairDatabase
이나 compact
을 사용할 경우 롤링 방식을 사용하는 것이 가장 좋습니다.
롤링 방법은 먼저 보조 노드를 꺼내고 디스크 조각 모음을 수행하는 것입니다. 그런 다음 모든 슬레이브 노드에서 위 단계를 반복합니다. 마지막으로 기본 단계를 낮추고 디스크 조각 모음을 수행합니다. 이렇게 하면 이러한 작업이 온라인 서비스에 미치는 영향을 피할 수 있습니다.
각 애플리케이션과 릴리스의 크기는 2의 거듭제곱이므로 MongoDB가 빈번한 업데이트 및 삭제 시 디스크를 보다 효율적으로 사용할 수 있도록 usePowerOf2Sizes
을 사용하는 것이 좋습니다.