[pgsql-jp: 29866] Re: ファイルの肥大化【解決】

yoichi_takano @ ha.daifuku.co.jp yoichi_takano @ ha.daifuku.co.jp
2003年 5月 13日 (火) 21:55:26 JST


お世話になります。高野と申します。


斎見様、谷田様、えいどめ様、杉田様 メールありがとうございます。


結論からいうと、余分なラージオブジェクトを削除していないことが問題でした。

以下の通り、実際のラージオブジェクトは別の場所にあることを知りませんでした。
http://ml.postgresql.jp/pipermail/pgsql-jp/2002-April/000831.html

そのため私が作った file_lob テーブルの中を削除すればラージオブジェクト
も削除されると思ってました。

hoge=# select count(*) from file_lobj;
 count
-------
    16
(1 row)
hoge=#

しかし、以下のようにすると沢山のデータがありました。
hoge=# select count(*) from pg_largeobject;
  count
---------
 3354046
(1 row)
hoge=# \q


ラージオブジェクトを削除するには\lo_unlinkを使えばできそうですが、
沢山あるので 谷田さんが紹介された contrib/vacuumlo で行い
無事に解決できました。

bash-2.05$ ./vacuumlo -v dex
Connected to db
Checking id in file_lobj
Removing lo 327003
Removing lo 637667
 ............
Removing lo 3218649
Removing lo 3344115
Removed 766 large objects from dex.
bash-2.05$
bash-2.05$

hoge=# vacuum;
VACUUM
hoge=#
hoge=# select count(*) from pg_largeobject;
 count
-------
 36565
(1 row)
hoge=#


皆様本当にありがとうございました。


#斎見様
p.loid や f.loid というのがよく分かりませんでした。

SELECT p.loid FROM pg_largeobject
LEFT OUTER JOIN file_lobj f
 ON p.loid = f.loid
WHERE f.loid IS NULL;








pgsql-jp メーリングリストの案内