LinuxでPostgreSQL 8.1.11を運用しています。24時間運用なので、VACUUM FULLはせずに毎日深夜にVACUUM ANALYZEを実行しています。
insert,update,deleteが頻繁に起こるシステムです。
VACUUM FULLを実行した場合、どの程度領域を回収できるのかを見積もろうとしています。
現在のデータサイズとOS上の使用容量の差分がわかれば、VACUUM FULLで回収できる領域が見積もれると考えているのですが、データサイズの確認方法がわかりません。
次のような計算でしかわからないでしょうか?
(1行のサイズ×行数)×全テーブル
上のような計算の場合でも、textのような場合は、サイズが行ごとに異なりそうな気がします。データサイズを確認する方法はありませんでしょうか?
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
一番簡単なのは VACUUM FULL を実際に実行し、その前後のサイズを比較することですね。
VACUUM FULL を実行せずに確認するなら、どの程度の精度で見積もるかによって異なりますが、内部的なこと (8kB のブロック単位にディスクに格納されるとか、ブロックやタプルのヘッダーサイズなど) を知っていないと難しいです。
ヒントとしては、テーブルの行数は pg_class テーブルの reltuples 列、テーブルに定義された列の値の平均サイズは pg_class テーブルの avg_width 列、null の割合は null_frac 列に統計情報 (正確な値ではない) として格納されています。これらの値をもとに計算すればある程度の精度で有効な行以外によって占められてる割合を求めることができます。
こういった計算をするのが面倒なら、contrib モジュールの pgstattuple を使うのがいいと思います (参考 URL)。pgstattuple を使えば有効でない行や空き領域の割合、サイズを調べることができます。
参考URL:http://www.postgresql.jp/document/8.4/html/pgsta …
No.1
- 回答日時:
はじめまして、通りすがると申します。
VACUUM ANALYZEを実行してどれぐらい空くかは実際やってみないと解らないと思います。
ただ、予測のための計算は上記方法ではできません。
計算の説明をするとA4横の用紙にざっと9枚程度の資料になってしまいます。
計算の参考資料としましては、以下のサイトなんかは参考になると思います。
http://www2b.biglobe.ne.jp/~caco/webdb-pdfs/vol2 …
この計算式を元に、ディスクへのロード率を調整して、実際の容量と比較検証を行い、
最も近い値を導きだしたものが、自分の環境に合った計算式になると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 中学校 比の文章題 2 2022/08/28 02:49
- ドライブ・ストレージ HDDの未割り当て領域が認識されない 7 2022/11/27 18:51
- 賃貸マンション・賃貸アパート 6帖の部屋、実際の広さとの差異 部屋を内見し保証会社の審査が通っていますが 測った部屋のサイズを確認 2 2022/12/13 19:36
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- その他(ネットショッピング・通販・ECサイト) paypayフリマの配送方法を間違えた場合 paypayフリマの配送方法をおてがる配送ヤマトにしたの 2 2022/03/23 14:20
- ヤフオク! ヤフオク!の送料 5 2022/10/05 13:08
- UNIX・Linux ubuntuで デイスク/deb/loopというドライブが出るがこれは何? 4 2023/06/04 16:52
- ホームページ作成・プログラミング グリッドレイアウトHTMLとCSS 1 2023/02/22 02:36
- 統計学 統計学、エクセルがわかりません!解答と詳しい解説をお願いします! (1)それぞれの地域別に記述統計量 9 2022/08/21 16:30
- 国産バイク ナビの性能について 4 2023/04/16 09:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データを削除しても表領域の使...
-
ORA-00959: 表領域'****'は...
-
Oracleはどの程度まで巨大なテ...
-
表領域の使用率がもうすぐ100%
-
データファイルの縮小
-
Data Pump で大量データインポ...
-
データ削除の方法
-
Access レコードを追加できませ...
-
ACCESS 複数テーブル・複数フィ...
-
テーブルからのselectにおいて...
-
他ファイルのテーブルの情報を...
-
検索結果の列数を動的に変更したい
-
INSERT時に発番を行いたい
-
db2にて数値を3桁文字にて出力...
-
異なるスキーマからデータを抽...
-
datapumpの実行方法について
-
C#でaccdbファイルのテーブルの...
-
SQL*Loaderで、データを加工し...
-
アナライズとインデックス作成...
-
データ読込時のタイムアウト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データを削除しても表領域の使...
-
ORA-00959: 表領域'****'は...
-
Data Pump で大量データインポ...
-
データベースの初期サイズ
-
表領域の使用率がもうすぐ100%
-
テーブルのSTORAGE句のサイズ設定
-
create table時のINITIALとMAXE...
-
ORACLEでの領域計算
-
oracle SYSTEM01.DBF が大きい
-
TruncateしたテーブルへのInser...
-
データ削除の方法
-
NEXT EXTENTのサイズが0
-
UNDO_RETENTION初期化パラメー...
-
表領域(users)の中身を整理したい
-
INDEX 見積もりについて
-
オーバーヘッドってなんですか?
-
運用中のALTER TABLE
-
USER_SEGMENTの参照について
-
Oracleはどの程度まで巨大なテ...
-
Oracle8.1iでテーブルご...
おすすめ情報