2010年6月 8日

[pgsql-jp: 40292] Re:Vacuumによる物理的なDiskの開放について質問

皆様、理解できました。
ご説明ありがとうございました。

--
Jun'ya Nishida

Tomoaki Sato さんは書きました:
> 佐藤です。

>
> From: Takahiro Itagaki <itagaki.takahiro@xxxxx>
> Date: Thu, 03 Jun 2010 13:52:16 +0900
>
>> "Jun'ya Nishida" <nishida@xxxxx> wrote:
>>
>>> DBからの大量のレコード(70万レコード)削除、その後、翌朝の
>>> vacuum(vacuum fullは実施してません)では、Diskの使用量は
>>> とくに減りませんでしたが、3日後のvacuum終了時点で、Disk使用量
>>> が大幅に減少しました。
>>>
>>>   なぜ二日もたってから、急にDiskが開放されたのか?というのが
>>>   そもそもの疑問です。
>> VACUUM (無印) は、ファイルの末尾に有効な行が無い場合にのみ
>> ファイルを縮小します。
>>
>> [行] [空] [行] [空] [空] [空] [行]
>>
>> のような物理配置状況では VACUUM してもファイルサイズは減りませんが、
>> たまたま最後の [行] が DELETE (or UPDATE で別の場所に再配置) されると、
>>
>> [行] [空] [行] [空] [空] [空] [ゴミ]
>>
>> が VACUUM されて、以下のように縮小されます。
>>
>> [行] [空] [行] (これ以降は全て [空] なので切り詰め)
>>
>>> 参考文献、マニュアル等へのポインタでも結構ですので、教えていただけると
>>> 助かります。
>> マニュアルに記述ってありましたっけ? 該当コードの場所は示せるのですが……。
>> http://doxygen.postgresql.org/vacuumlazy_8c.html#19584962e8dba509013cc41ea0482a54
>
> マニュアルの「23.1.2. ディスク容量の復旧」に少しだけ書いてありますね。
>
> http://www.postgresql.jp/document/8.4/html/routine-vacuuming.html#VACUUM-FOR-SPACE-RECOVERY
>
> かなり分かりづらいですが、2 段落目の「テーブルの最後の 1 つ以上複数ペー
> ジが完全にすいていて、また排他テーブルロックが容易に獲得できる特殊な場
> 合を除き」というのが、FULL でない VACUUM でファイルサイズを切り詰めら
> れる条件ですね。
>
> VACUUMの 標準形式はテーブルとインデックス内の終わっている行バージョ
> ンを削除し、将来の再利用を可能にするための場所に印を付けます。しかし、
> テーブルの最後の 1 つ以上複数ページが完全にすいていて、また排他テー
> ブルロックが容易に獲得できる特殊な場合を除き、その場所をオペレーティ
> ングシステムに返還しません。
>
> あと、日本語訳では「A また B の場合」になっていますが、「A かつ B の場
> 合」が正しいと思われます。
>
>
> ----
> PostgreSQL トレーニング: http://www.sraoss.co.jp/prod_serv/training/
> PowerGres ファミリー: http://powergres.sraoss.co.jp/
> Tomoaki Sato <sato@xxxxx>
> SRA OSS, Inc. Japan
>
>
>

--
Jun'ya Nishida (nishida@xxxxx)
Platform & Engineering Service Division.
NextGen Inc. http://www.nextgen.co.jp)
Phone: 050-5533-4695 FAX: 03-3234-6857


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




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