5

BLOBとして定義された列にファイルを格納するJavaでHSQLDBデータベースを使用しています。

ファイル/BLOB を含むテーブル行をテーブルに追加すると、.lobs ファイルのファイル/BLOB のサイズが大きくなります。テーブルに別のファイルを追加すると、サイズが再び大きくなります (2 x BLOB サイズ)。

そこで、10 回繰り返し、同じファイルをテーブルに書き込み、挿入直後に削除するテスト メソッドを実装しました。

現在、私の .lobs ファイルはファイル サイズの 10 倍になっています...ファイルを含むすべてのテーブル行を削除したにもかかわらずです。

CHECKPOINT DEFRAG を実行しようとしましたが、何も起こりません。.lobs ファイルは同じファイル サイズのままです。

私が作成している私の webapp は私のデータベースにたくさんのファイルを書き込もうとしているので、これは私を心配しています。サイズを変更し、最終的にすべてのディスク容量を消費します。

いくつかの設定が不足していますか、それともこれは HSQLDB と BLOB の予想される動作ですか?

どうもありがとう!

よろしく、アンドレアス

4

1 に答える 1

2

これは正常です。

削除されたすべての LOB スペースが記録されます。CHECKPOINT の後、新しい LOB を挿入すると、スペースが再利用されます。

本番データベースでは、挿入と削除のサイクルが繰り返されます。ログの実行では、.lobs ファイルのサイズがデータベース内の LOB の実際のサイズを大幅に超えることはありません。

アップデート:

チェックポイントまで .lobs ファイルが大きくなる理由は、システム クラッシュが発生した場合にデータを回復できるようにするためです。

HSQLDB バージョン 2.3.0 以降のバージョンでは、LOB を削除した後にファイルの末尾に空のスペースがある場合、CHECKPOINT で .lobs ファイルが切り捨てられます。

于 2012-12-17T20:08:43.640 に答える