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実行でデータサイズも縮小。。
| 固定リンク
「PostgreSQL(PowerGres)の話」カテゴリの記事
- PostgreSQLのラージオブジェクトを削除(2008.11.16)
- 表ロックの備忘録(2007.03.29)
- listen_address設定ではまる(2007.02.23)
最近のコメント