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

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











json.parse () String을 개체에 사용하는 것이 가장 안전하고 효율적입니다. 문자열이 JSON 사양을 준수하고 일반적인 오류를 피하십시오. 코드 견고성을 향상시키기 위해 예외를 처리하려면 시도해보십시오. 보안 위험이있는 Eval () 메소드를 사용하지 마십시오. 거대한 JSON 줄의 경우 성능을 최적화하기 위해 청크 파싱 또는 비동기 구문 분석을 고려할 수 있습니다.

예, H5 페이지 제작은 HTML, CSS 및 JavaScript와 같은 핵심 기술을 포함하는 프론트 엔드 개발을위한 중요한 구현 방법입니다. 개발자는 & lt; canvas & gt; 그래픽을 그리거나 상호 작용 동작을 제어하기 위해 JavaScript를 사용하는 태그.

CSS에서 크기 조정 기호를 사용자 정의하는 방법은 배경색으로 통합됩니다. 매일 개발에서, 우리는 종종 조정과 같은 사용자 인터페이스 세부 정보를 사용자 정의 해야하는 상황을 발생시킵니다.

브라우저의 인쇄 설정에서 페이지의 상단과 끝을 제어하기 위해 JavaScript 또는 CSS를 사용하는 방법. 브라우저의 인쇄 설정에는 디스플레이가 ...인지 제어 할 수있는 옵션이 있습니다.

Flex 레이아웃 및 솔루션에서 텍스트를 과도하게 누락하여 컨테이너 개구부 문제가 사용됩니다 ...

표준 JSON 문자열의 경우 vue.js의 객체로 문자열을 변환 할 때 JSON.PARSE ()가 선호됩니다. 비표준 JSON 문자열의 경우, 정규 표현식을 사용하여 문자열을 처리하고 형식 또는 디코딩 된 URL 인코딩에 따라 방법을 줄일 수 있습니다. 문자열 형식에 따라 적절한 방법을 선택하고 버그를 피하기 위해 보안 및 인코딩 문제에주의를 기울이십시오.

CSS 애니메이션 또는 타사 라이브러리를 사용하여 VUE에서 Marquee/Text Scrolling Effects를 구현하십시오. 이 기사는 CSS 애니메이션 사용 방법을 소개합니다. & lt; div & gt; CSS 애니메이션을 정의하고 오버플로를 설정하십시오 : 숨겨진, 너비 및 애니메이션. 키 프레임을 정의하고 변환을 설정하십시오 : Translatex () 애니메이션의 시작과 끝에서. 지속 시간, 스크롤 속도 및 방향과 같은 애니메이션 속성을 조정하십시오.

vue.js의 Foreach 루프는 V-For 지시문을 사용하여 개발자가 각 요소를 배열 또는 객체에서 반복하고 각 요소에서 특정 작업을 수행 할 수 있습니다. 구문은 다음과 같습니다. & lt; template & gt; & lt; ul & gt; & lt; li v-for = & quot; 항목의 항목 & gt; {{item}} & lt;/li & gt; & lt;/ul & gt; & lt;/template & gt; & am
