[pgsql-jp: 34646] PostgreSQLでデータベースのサイズを監視するには?
和泉由美子
izumi-yumiko @ tokyo.scnet.co.jp
2005年 1月 14日 (金) 20:18:27 JST
お世話になっております。和泉です。
昨年からずっとPostgreSQLのデータベース領域監視処理
を作っております。
使用しているバージョンは7.3.4ですが、7.3.8か7.4.6も
今後使う予定です。
現在、以下のように実装しようとしています。
1)pg_classより指定されたデータベースの全テーブル名を取得
2)1)のテーブル全てに対し、pgstattupleを実行
3)2)の結果を計算する
この実装で、
データベース サイズ
データベース 使用量
データベース 空き容量
データベース 使用率
データベース フラグメンテーション率
を求めようとしています。
ただし、サイズだけはcontrib/dbsizeで取得でき、その結果と
比較すると、pgstattupleの結果よりも大きなサイズが取得され
ます。(当然かもしれませんが・・・)
たとえば、こんな感じです。
<dbsizeの結果>
postgre=# select database_size('aaa');
database_size
---------------
106889460
(1 row)
<pgstattupleの結果>
totalsize = 35381248
usedsize = 28778787
usedpercent = 81.33
deadsize = 592968
tablefragmentation = 1.67
freesize = 4798104
freepercent = 13.56
ここで質問ですが、以下教えていただけないでしょうか?
・上記結果の差分にはどんな情報が含まれているのでしょうか?
・上記pgstattupleによる領域監視で、サイズや使用量に関する
情報は十分でしょうか?
(可能なら、上記pgstattupleによる実装で「領域監視」を
行うことを開発アプリケーションのルールにしようと考えて
います。)
・これ以外に領域情報を取得するライブラリなどはありますか?
「[pgsql-jp: 34327] Re: データベースの使用量などを取得する方法」
にて、以前スクリプトによる取得方法を教えていただいたのですが、
シェルでの実行とpsqlの実行回数の多さがネックになり、取り込む
ことができませんでした。
条件は、
1.SQL文だけで実行できること
2.データベース名だけ指定すれば動作すること
3.FUNCTIONを作らないこと
です。
以上よろしくお願いします。
pgsql-jp メーリングリストの案内