2011年5月13日

[pgsql-jp: 40774] Re:【質問】baseフォルダ配下のファイル削除について

はじめまして。梅田といいます。

以前、似たような現象にあったことがありますが、そのときの状況は、
テーブルとindexを同時にDDLするときに、
主キー制約をtablespace指定なしでDDL文に記述して、同じキーのindexはtablespace指定付記述して
オベジェクトを作成した際に
base以下に余計なindexができてしまったことがありました。

これとは別件かもわかりませんが、ご参考までに。

-----Original Message-----
From: pgsql-jp-bounces@xxxxx [mailto:pgsql-jp-bounces@xxxxx] On Behalf Of MauMau
Sent: Friday, May 13, 2011 9:21 PM
To: PostgreSQL Japanese Mailing List
Subject: [pgsql-jp: 40773] Re: 【質問】baseフォルダ配下のファイル削除について

はじめまして、村上さん。MauMauといいます。

From: "m.murakami" <m.murakami@xxxxx>
> はじめまして。村上と申します。
> 以下、長文となってしまいますが、ご容赦願います。
>
> PostgreSQLを使用していて、base配下に作成されているデータ(ファイル)の
> 削除について確認があります。
>
> ■問題点
> オブジェクトの削除(Drop tableなど)は正常に完了して
> vacuumフルを実行しましたが、base配下に作成されているデータ(ファイル)が
> 削除されません。(27GBほど)
>
>
> ・サイズが足りなかったせいか、あるテーブル、インデックスがロック状態となる
>
> ・実行中のセッションがないことを確認し、DBインスタンスを再起動し、ロック状態
>
> を解除。
>
> ・元々あった30GBのデータも、データ移行テストで不要になったため、DBユーザ
> (user)にて
>  すべてのオブジェクトを削除(Drop table, indexなど)し、vacuumフルを実行。
>   →使用サイズが50GBから27GBになった(5/11と5/13に実施)
>  ★本来であれば、ここでpg_catalogなど管理系のデータファイル以外は削除される
>
> 認識です。
> (DBユーザ(user)が作成した、baseディレクトリ配下のデータファイルが削除さ
>
> れる認識)
>
> ■base配下のサイズ使用量
> 4.3M 1
> 4.3M 11510
> 4.4M 11511
> 27G 16384
> 4.0K pgsql_tmp
>

DROP TABLE/INDEXを実行したトランザクションをコミットした時点で、そのテーブルやインデックスのデータを格納していたファイルは削除されます。VACUUM FULLでファイルが削除されるわけではないです。

base/16384/に大きなファイルが残っているとのことですので、それらのファイルがどのテーブルやインデックスのためのファイルかを確認してみてください。そのためにはシステムカタログpg_databaseとpg_classを検索します。おそらく、何らかのテーブルやインデックスをDROPしていないものと思われます。

ちなみに、「ロック状態」というのはPostgreSQLのマニュアルに登場しないように思いますが、どのような状態のことでしょう?

投稿者 xml-rpc : 2011年5月13日 21:34
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103829
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。