3

中規模のデータベース クラスタを PostgreSQL 8.3 で実行しています。

データベースは、デジタル ファイル (画像) を LOB として格納します。

データベース クラスタにはかなりのアクティビティがあり、多くのコンテンツが継続的に作成および削除されています。

OID をホストするアプリケーション テーブルが (イメージ ファイルが削除されると) アプリケーションによって適切に維持される場合でも、データベース クラスタのサイズは継続的に増大します。

自動バキュームがアクティブであるため、これは発生しません。

4

1 に答える 1

4

アプリケーション テーブル (OID を含む) の行が削除されても、LOB はデータベースから削除されません。

これは、VACUUM プロセスによってスペースが再利用されないことも意味します。

未使用の LOB を取り除くために、データベースで VACUUMLO を実行しました。Vacuumlo は、参照されていないすべての LOB をデータベースから削除します。

呼び出しの例:

vacuumlo -U postgres -W -v <database_name>

(-v を含めたのは、vacuumlo をもう少し冗長にして、削除される LOB の数を確認できるようにするためだけです)

vacuumlo が LOB を削除した後、VACUUM FULL を実行できます (または自動バキューム プロセスを実行します)。

于 2013-06-26T18:13:42.880 に答える