ホームページ  >  記事  >  バックエンド開発  >  Go での LevelDB データベース サイズ削減の問題 (levigo)

Go での LevelDB データベース サイズ削減の問題 (levigo)

王林
王林転載
2024-02-11 11:06:10778ブラウズ

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

php エディター Youzi は、Go で LevelDB データベースを使用するときに発生する可能性のあるサイズ削減の問題と解決策を紹介します。 LevelDB は高性能のキー/値データベースですが、大量のデータを処理すると、データベースのサイズが急速に増大し、大量の記憶領域を占有する可能性があります。この記事では、levigo ライブラリを使用し、圧縮アルゴリズムを使用してデータベースのサイズを削減し、それによってパフォーマンスを向上させ、ストレージ領域を節約することによって、この問題を解決する方法について詳しく説明します。初心者でも経験豊富な開発者でも、この記事は役に立ちます。

質問の内容

Stack Overflow コミュニティの皆さん、

私は現在、levigo パッケージを使用してデータ ストレージに LevelDB を利用する Go プログラムを開発しています。私の目標は、データベース サイズを効率的に管理することであり、特に利用可能なストレージが少ない場合は古いレコードを削除することです。ただし、予期しない動作が観察されました。レコードを削除した後、LevelDB データベース フォルダーのサイズが比例して減少しませんでした。

これは、問題を再現するコードの簡略版です:

セーブデータコード:

リーリー

データコードの削除:

リーリー

コードを実行して 5 つの項目を保存すると、データベース フォルダーのサイズは 30MB になります。その後、3 つのアイテムを削除するコードを実行すると、フォルダーのサイズが 26 MB に減少しました。削除されるデータ量を考慮すると、サイズはさらに大幅に削減されると予想していました。

キャッシュ サイズやファイル制限などの LevelDB オプションを設定しましたが、構成または削除中に何かを見逃した可能性があります。

###質問:###

レコードを削除した後、LevelDB データベース フォルダーのサイズが比例して減少しない原因は何ですか?
  1. データベース サイズをより効率的に管理するために考慮すべき他の構成や最適化はありますか?
  2. levigo でデータベースを圧縮して未使用のスペースを解放する特定の方法はありますか?
  3. この問題を解決するための洞察やアドバイスをいただければ幸いです。ありがとう!

回避策

この

レベル DB リポジトリ

の質問を読んで、これを追加してループ db の最後にある行を削除できることがわかりました。 CompactRange (levigo.Range{}) したがって、データベースは未使用のデータを削除し、データベース フォルダーの合計サイズが減少します。

以上がGo での LevelDB データベース サイズ削減の問題 (levigo)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。