Realm 파일 크기 줄이기 - C++ SDK
이 페이지의 내용
시간이 지남에 따라 Realm에서 사용하는 저장 공간이 조각화되어 필요한 것보다 더 많은 공간을 차지할 수 있습니다. 내부 저장소를 재정렬하고 잠재적으로 파일 크기를 줄이려면 영역 파일을 압축해야 합니다.
Realm의 기본 동작은 Realm 파일이 너무 커지는 것을 방지하기 위해 자동으로 압축하는 것입니다. 사용 사례에 자동 압축이 충분하지 않은 경우 수동 압축 전략을 사용할 수 있습니다.
자동 압축
SDK는 파일 내 데이터를 지속적으로 재할당하고 사용하지 않는 파일 공간을 제거하여 백그라운드에서 자동으로 Realm 파일을 압축합니다. 자동 압축은 대부분의 애플리케이션에서 Realm 파일 크기를 최소화하는 데 충분합니다.
파일에서 사용되지 않은 공간이 파일의 사용자 데이터 크기의 두 배 이상일 때 자동 압축이 시작됩니다. 자동 압축은 파일에 액세스하지 않을 때만 수행됩니다.
수동 압축 옵션
수동 압축은 더 엄격한 파일 크기 관리가 필요한 애플리케이션에 사용할 수 있습니다.
Realm 수동 압축은 다음과 같은 방식으로 작동합니다.
영역 파일의 전체 내용 읽기
다른 위치의 새 파일에 콘텐츠 쓰기
원본 파일 바꾸기
파일에 많은 데이터가 포함되어 있는 경우 이 작업은 많은 비용이 소요될 수 있습니다.
데이터베이스 구성에서 should_compact_on_launch() 메서드를 사용하여 데이터베이스 압축을 시도합니다. 이 메서드를 실행할 조건을 다음과 같이 지정합니다.
디스크에 있는 파일의 크기
파일에 포함된 여유 공간의 양
다음 예에서는 파일이 100MB 이상이고 Realm 파일 공간의 50% 이하를 사용하는 경우 영역을 압축하는 조건을 설정하는 방법을 보여 줍니다.
// Create a database configuration. auto config = realm::db_config(); config.should_compact_on_launch([&](uint64_t totalBytes, uint64_t usedBytes) { // totalBytes refers to the size of the file on disk in bytes (data + free // space). usedBytes refers to the number of bytes used by data in the file // Compact if the file is over 100MB in size and less than 50% 'used' auto oneHundredMB = 100 * 1024 * 1024; return (totalBytes > oneHundredMB) && (usedBytes / totalBytes) < 0.5; }); // The database is compacted on the first open if the configuration block // conditions were met. auto realm = realm::db(config);
Realm 수동 압축 팁
Realm을 수동으로 압축하는 것은 리소스 집약적인 작업일 수 있습니다. Realm을 열 때마다 애플리케이션이 압축되어서는 안 됩니다. 대신 압축을 최적화하여 파일 크기가 너무 커지지 않도록 애플리케이션이 충분히 자주 압축을 수행하도록 합니다. 애플리케이션이 리소스가 제한된 환경에서 실행되는 경우 특정 파일 크기에 도달하거나 파일 크기가 성능에 부정적인 영향을 미치는 경우 압축할 수 있습니다.
이러한 권장 사항은 애플리케이션에 대한 압축 최적화를 시작하는 데 도움이 될 수 있습니다.
최대 파일 크기를 평균 영역 상태 크기의 배수로 설정합니다. 평균 영역 상태 크기가 10 MB인 경우 예상 사용량과 기기 제약 조건에 따라 최대 파일 크기를 20 MB 또는 40 MB로 설정할 수 있습니다.
우선, 영역 파일 크기의 50% 이상이 더 이상 사용되지 않는 경우 영역을 압축합니다. 현재 사용 중인 바이트를 전체 파일 크기로 나누어 현재 사용 중인 공간의 비율을 확인합니다. 그런 다음 그 비율이 50% 미만인지 확인합니다. 즉, 영역 파일 크기의 50% 이상이 사용되지 않는 공간이라는 의미이므로 압축하는 것이 좋습니다. 실험을 통해 애플리케이션에 가장 적합한 비율을 찾을 수 있습니다.