2016-07-30 9 views
0

私は、ローカルデータストア用のBerkeleyDBを使用するサードパーティのアプリケーションを使用しています(BMCディスカバリと呼ばれています)。時間が経つにつれて、BDBファイルは断片化して大量になり、BMC Softwareは基本的にdb_dumpをdb_loadに新しいファイル名でパイプしたコンパクトなユーティリティをスクリプト化し、元のファイルを再構築したファイルで置き換えます。与えられたBDBファイルに対してBerkeleyDBのダンプ/ロード操作の継続時間を計算する方法は?

大容量のファイルに要する時間は非常に長く、数時間かかることがありますが、同じサイズのものは半分になります。それは本当にファイル内の断片化のレベルおよび/またはその中のデータのタイプに依存しているようです(私は仮定しますか?)。

提供されているユーティリティは、データストア(複数のBDBファイルで構成されています)の合計サイズに基づいて持続時間を見積もるための粗い方法を使用します。 Ex。 1Gより大きい場合は「数時間かかる」とし、100Gを超えると「時間がかかる」と言います。これはまったく助けにならない。

BerkeleyDB.6.0(Red Hat)で提供されているコマンドを使用して、特定のBDBファイルのdb_dump/db_load操作の継続時間を見積もるには、より正確で正確な方法があるのでしょうか?

注:この質問には、特定のサードパーティ製のアプリケーションが記載されていますが、文脈に入れておくだけです。問題は、BerkelyDBにとって一般的です。

答えて

0

db_dump/db_loadは、断片化を解消する通常の(移植可能な)方法です。

最新のBDB(過去4〜5年、確かにdb-6.xなど)には、16進数の変換を避けることで高速になるdb_hotbackup(8)コマンドがあります。

(以下ソリューションはカスタムコーディングを必要とする)

DB-もあり>コンパクト(3)「必要に応じて基本となるファイルシステムに未使用のBツリー、ハッシュまたはRecnoのデータベースのページを返します。」と呼んでいます。これは( "ls -l"で)ばかげて大規模に見えるが、実際にはデータを格納するのに必要なブロックだけを使用する疎なファイルにつながる可能性が高い。

最後に、db_upgrade(8)/ db_verify(8)があります。両方ともDB-> set_feedback(3)でカスタマイズして、長時間の操作のためのコールバック(プログレスバー)を行います。

私はdb_tuner(8)とdb_stat(8)を使用して構成をチェックし、DB_CONFIGのチューニングパラメータについて少し考えます。

関連する問題