php 편집기 Youzi가 Go에서 LevelDB 데이터베이스를 사용할 때 발생할 수 있는 크기 감소 문제와 해결 방법을 소개합니다. LevelDB는 고성능 키-값 데이터베이스이지만, 대용량 데이터를 처리할 경우 데이터베이스의 크기가 급격히 커지고 많은 저장 공간을 차지할 수 있습니다. 이 기사에서는 Levigo 라이브러리를 사용하여 이 문제를 해결하는 방법과 압축 알고리즘을 사용하여 데이터베이스 크기를 줄여 성능을 향상시키고 저장 공간을 절약하는 방법을 자세히 설명합니다. 당신이 초보자이건 숙련된 개발자이건 이 글이 도움이 될 것입니다.
안녕하세요 Stack Overflow 커뮤니티,
현재 Levigo 패키지를 사용하여 데이터 저장에 LevelDB를 활용하는 Go 프로그램을 개발 중입니다. 내 목표는 데이터베이스 크기를 효율적으로 관리하는 것입니다. 특히 사용 가능한 저장 공간이 부족할 때 오래된 레코드를 삭제하는 것입니다. 그런데 예상치 못한 현상이 관찰되었습니다. 레코드를 삭제한 후에도 LevelDB 데이터베이스 폴더 크기가 비례적으로 줄어들지 않았습니다.
다음은 문제를 재현하는 단순화된 코드 버전입니다.
저장 데이터 코드:
으아악데이터 코드 삭제:
으아악코드를 실행하여 5개 항목을 저장한 후 데이터베이스 폴더 크기는 30MB입니다. 나중에 3개 항목을 삭제하는 코드를 실행했더니 폴더 크기가 26MB로 줄었습니다. 제거되는 데이터의 양을 생각하면 크기가 더 많이 줄어들 것으로 예상했습니다.
캐시 크기, 파일 제한 등 LevelDB 옵션을 설정했는데 구성이나 제거 중에 뭔가 놓친 것 같습니다.
질문:
이 문제 해결에 대한 통찰력이나 지침을 주시면 감사하겠습니다. 감사해요!
레벨 DB 저장소에서 이 문제를 읽으면서 루프 끝에서 줄을 삭제하기 위해 이것을 추가할 수 있다는 것을 깨달았습니다 db.CompactRange(levigo.Range{})
따라서 데이터베이스는 사용되지 않는 데이터를 삭제하고 데이터베이스 폴더의 전체 크기가 줄어듭니다.
위 내용은 Go(levigo)에서 LevelDB 데이터베이스 크기 감소 관련 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!