« 2008年9月 | トップページ | 2008年12月 »

PostgreSQLのラージオブジェクトを削除

PostgreSQLにてラージオブジェクトを削除したいということで、実施してみました。
ラージオブジェクトを保持するテーブルの該当カラムには、oid がセットされており、実際のラージオブジェクトは、別のところに保存されています。

delete from hogetable where delete_flag = 1;

で、対象のレコードを削除してもラージオブジェクトは削除されません。よってvacuumによっても削除されないのでデータサイズは、変わらないです。
ちなみに、データベースのサイズ確認を行う方法は以下です。

select pg_database_size('データベース名');

最終的にラージオブジェクトを削除する方法は以下。

select lo_unlink(oidのカラム) from hogetable where delete_flag=1;

delete from hogetable where delete_flag=1;

そして、削除を実施してから、vacuum実行でデータサイズも縮小。。

|

« 2008年9月 | トップページ | 2008年12月 »