>  기사  >  백엔드 개발  >  Go(levigo)에서 LevelDB 데이터베이스 크기 감소 관련 문제

Go(levigo)에서 LevelDB 데이터베이스 크기 감소 관련 문제

王林
王林앞으로
2024-02-11 11:06:10778검색

Go 中 LevelDB 数据库大小缩减的问题 (levigo)

php 편집기 Youzi가 Go에서 LevelDB 데이터베이스를 사용할 때 발생할 수 있는 크기 감소 문제와 해결 방법을 소개합니다. LevelDB는 고성능 키-값 데이터베이스이지만, 대용량 데이터를 처리할 경우 데이터베이스의 크기가 급격히 커지고 많은 저장 공간을 차지할 수 있습니다. 이 기사에서는 Levigo 라이브러리를 사용하여 이 문제를 해결하는 방법과 압축 알고리즘을 사용하여 데이터베이스 크기를 줄여 성능을 향상시키고 저장 공간을 절약하는 방법을 자세히 설명합니다. 당신이 초보자이건 숙련된 개발자이건 이 글이 도움이 될 것입니다.

질문 내용

안녕하세요 Stack Overflow 커뮤니티,

현재 Levigo 패키지를 사용하여 데이터 저장에 LevelDB를 활용하는 Go 프로그램을 개발 중입니다. 내 목표는 데이터베이스 크기를 효율적으로 관리하는 것입니다. 특히 사용 가능한 저장 공간이 부족할 때 오래된 레코드를 삭제하는 것입니다. 그런데 예상치 못한 현상이 관찰되었습니다. 레코드를 삭제한 후에도 LevelDB 데이터베이스 폴더 크기가 비례적으로 줄어들지 않았습니다.

다음은 문제를 재현하는 단순화된 코드 버전입니다.

저장 데이터 코드:

으아악

데이터 코드 삭제:

으아악

코드를 실행하여 5개 항목을 저장한 후 데이터베이스 폴더 크기는 30MB입니다. 나중에 3개 항목을 삭제하는 코드를 실행했더니 폴더 크기가 26MB로 줄었습니다. 제거되는 데이터의 양을 생각하면 크기가 더 많이 줄어들 것으로 예상했습니다.

캐시 크기, 파일 제한 등 LevelDB 옵션을 설정했는데 구성이나 제거 중에 뭔가 놓친 것 같습니다.

질문:

  1. 레코드 삭제 후 LevelDB 데이터베이스 폴더 크기가 비례적으로 줄어들지 않는 원인은 무엇입니까?
  2. 데이터베이스 크기를 보다 효율적으로 관리하기 위해 고려해야 할 다른 구성이나 최적화가 있습니까?
  3. Levigo에는 사용되지 않는 공간을 확보하기 위해 데이터베이스를 압축하는 특별한 방법이 있나요?

이 문제 해결에 대한 통찰력이나 지침을 주시면 감사하겠습니다. 감사해요!

해결 방법

레벨 DB 저장소에서 이 문제를 읽으면서 루프 끝에서 줄을 삭제하기 위해 이것을 추가할 수 있다는 것을 깨달았습니다 db.CompactRange(levigo.Range{})
따라서 데이터베이스는 사용되지 않는 데이터를 삭제하고 데이터베이스 폴더의 전체 크기가 줄어듭니다.

위 내용은 Go(levigo)에서 LevelDB 데이터베이스 크기 감소 관련 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제