• ベストアンサー

VACUUMとVACUUM FULLについて

掲題のコマンドですが、7.2以降では 【VACUUM】 ・データ削除(DELETE済み)領域を再使用可能に。 【VACUUM FULL】 ・削除領域を開放しディスクサイズを小さく。7.1までのVACUUMと同等。 となっていることは理解できたのですが、7.2以降のバージョンでは 例えば毎日VACUUM FULLを行っていると仮定した場合、別途VACUUMを行う必要はありませんよね? # 7.1以前ではVACUUMしかなかったわけだし…。 ご教授よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

確かにVACUUMをFULLオプションをつけて実行した場合に,その後VACUUMを行う必要はありません。 FULLオプションは,テーブルに対する排他ロックをかけてまで,不必要な行を削除するという動作をします。 逆に言うと,デッドロックが発生するぐらいのSQL文と平行でVACUUM FULLが走ってしまうと,そのSQL文は確実にデッドロックしてしまいます。 ディスクをかなり圧迫しているわけではない場合には,毎日行うVACUUMは「VACUUM」で,たまに「VACUUM FULL」でよいのでは?ないでしょうか。

KNIGHT11
質問者

お礼

VACUUM FULLすればVACUUMは必要ないという事で了解しました。 ご教授ありがとうございます。 今回、24H稼動のマイクロサーバ上でPGSQLを動かしており、 (そもそもこの時点で間違えている気がするのですが…) マイクロサーバという制約上、1GのCFで動かしているので 空き容量が心配で今回のような質問をさせていただきました。 そもそも24H稼動のサーバにPGSQLを使った事がそもそもの間違いでした(;´д`) 代わりのDBソフトに入れ替えを検討したいと思います。 お忙しいところご教授ありがとうございました。

関連するQ&A

  • VistaのVSSスナップ領域の解放

    WinVistaを利用しています。 ディスク容量が厳しくなってきたので ファイルを削除しようとしたのですが、 システムの復元やら、VSSやらがスナップ領域を持って居るようで ファイルを削除しても、領域を開放してくれません。 スナップ領域のサイズ指定はどこで行うのでしょうか?

  • PostgreSQLのテーブルサイズ

    LinuxでPostgreSQL 8.1.11を運用しています。24時間運用なので、VACUUM FULLはせずに毎日深夜にVACUUM ANALYZEを実行しています。 insert,update,deleteが頻繁に起こるシステムです。 VACUUM FULLを実行した場合、どの程度領域を回収できるのかを見積もろうとしています。 現在のデータサイズとOS上の使用容量の差分がわかれば、VACUUM FULLで回収できる領域が見積もれると考えているのですが、データサイズの確認方法がわかりません。 次のような計算でしかわからないでしょうか? (1行のサイズ×行数)×全テーブル 上のような計算の場合でも、textのような場合は、サイズが行ごとに異なりそうな気がします。データサイズを確認する方法はありませんでしょうか?

  • delete について教えてください。あちこち調べてみたのですが、解決

    delete について教えてください。あちこち調べてみたのですが、解決しません。 delete は、最初にその変数名で確保した領域を開放するのでしょうか、それとも現在その変数が差している領域を開放するのでしょうか? たとえば、 classe SampleClasse{ .......... }; SampleClasse *a, *b, c*; a = new SampleClasse; b = new SampleClasse; で 途中でa,bを入れ替えたとき、 c=a; a=b; b=c; delete a; というのは、現在のaの領域を開放するのでしょうか?それとも、new したときのaの領域(現在b)を開放するのでしょうか? ご教授お願いします。

  • パソコンについて

    WINDOWS95でドライブスペースを使ってドライブを圧縮したんですけど 圧縮解除する前にWINDOWSを削除してしまいました。 再度WINDOWSをインストールしようとしても、圧縮ドライブを解除してくださいと言われてインストールできません。 知り合いにFDISKコマンドでハードディスクの領域を開放して再度設定しなおせと言われてやってみたのですが、FDISKコマンドでも圧縮のかかった領域を開放することができません。 どうしたらこの圧縮領域を削除してWINDOWSを入れることができるんですか?

  • HDDの領域が消えてしまいました

    外付けUSB接続のHDDをパーティションで2つの領域(D・E)に分けて使用していたのですが、急に1つの領域(D)が無くなってしまいました。 パーティションの開放や削除は行っていません。 ディスクの管理画面で、領域(D)は表示されません。 領域(E)には問題なくアクセスできます。 どうにかして領域(D)のデータをサルベージする方法はないでしょうか? ご存知の方がいらしたらご教授願います。

  • デスクトップに消せないファイルが出来てしまったのですが…

    掲題の通り、デスクトップに消せないファイルが出来てしまいました。 プロパティで見るとサイズ0です。 削除しようとすると ファイルを削除できません。送り側のファイルまたはディスクから読み取れません。 というエラーダイアログが出ます。 C:\Documents and Settings\ユーザ名\デスクトップを見ても存在するのですが、コマンドプロンプトから見ると存在せず また、他のパーティションから別のOSを起動し、当該パーティションをマウントして見ると、存在しないのです。 これはどこに存在していて、どうすれば削除できるのでしょうか?

  • 配列の中身のdelete

    こんにちは 配列を使った際、うまいことDeleteが働いてくれないため メモリが開放されずに困っています、 初歩的な質問で申し訳ありませんが、質問させて下さい。 下記のプログラムでは、 単純にメモリ確保とメモリ開放を行っていると思うのですが… 注釈にもあるように、Deleteでメモリが開放されません。 #include <iostream> using namespace std; class Base { }; class Sub : public Base { char size[256];//領域確保用 }; void main() { Base* obj[10000]; for(int cnt=0;cnt<10000;cnt++) { obj[cnt] = new Sub; } for(int cnt=0;cnt<10000;cnt++) { delete obj[cnt];//メモリが開放されない } } ポインタが怪しいと思うのですが、 どうにかうまいことメモリを開放することは出来ないでしょうか。 よろしければ返答お願いいたします。

  • win7を削除したい

    添付画像のD:の領域に昔使っていたwin7が入っています。 ディスクの管理画面からは削除できず、コマンドプロンプトからもできませんでした。 この場合どうすれば削除できるのでしょうか?

  • テーブル領域をrmコマンドで消してしまいました.

    Oracle(ver8)データベースを使って、sqlコマンドでテーブルを作成後、UNIXのrmコマンドでテーブル領域を削除しまいました。 そのため、Oracle起動時にこの領域をマウントしようとして失敗してしまい データベースにアクセスできません。 復旧方法をご教授下さい。 テーブルは不要なので、Oracleデータベースにこの領域が削除されていることを認識させたいのです。

  • ハードディスクの領域解放について

    LINUXを入れて使っていた13Gのハードディスクを友人から譲り受 けWIN98起動ディスクのFDISKで領域を開放してフォーマットし直して, ブートディスクとして使おうとしましたが,領域の変更がききません。 友人は譲ってくれる前にWIN98でフォーマットして98が起動する状態に してくれましたが,エクスプローラーで見ると,3.48Gちょっとしか ありません。FDISKの画面では論理ドライブ(FAT32)の領域に当たりま す。拡張DOS領域は13Gあり,そのほかに基本DOS領域(FAT16)は24Mあっ て,Cドライブとなっているのはこの基本DOS領域だけで,残りはDド ライブになってしまっています。この13Gをウィンドウズで認識させる ため,FDSKで領域を開放したいのですが,Dにある論理ドライブの削除 を指示通りやっても削除しましたというメッセージの後で領域情報を見 ると削除できず元の通りに残っています。従って拡張DOS領域も,基本 DOS領域も削除できないというメッセージが出て,領域解放ができません。 フォーマットしようにも論理ドライブのみのフォーマットで使える容量は 3Gどまりです。どなたか対策をお教えください。よろしくお願いします。