[pgsql-jp: 28031] Re: DB FILE
sugita @ sra.co.jp
sugita @ sra.co.jp
2002年 11月 19日 (火) 14:02:25 JST
From: Naofumi Kondoh <nkon @ shonan.ne.jp>
Subject: [pgsql-jp: 28023] DB FILE (Re: )
Date: Tue, 19 Nov 2002 12:09:18 +0900
;;; (例)version 7.2.1 でのテスト結果
;;; ---------------------------------------------------------
;;; DBNAME = bigdb
;;; ---------------------------------------------------------
;;; (r) bigtab 1049.604 MB 2002-09-06 19:59:42 /kd/db/pgdata.7.2.1/base/9993518/9993519
;;; (r) bigtab 1049.604 MB 2002-09-06 20:39:37 /kd/db/pgdata.7.2.1/base/9993518/9993519.1
;;; (r) bigtab 1049.604 MB 2002-09-06 21:54:08 /kd/db/pgdata.7.2.1/base/9993518/9993519.2
;;; (r) bigtab 90.204 MB 2002-09-06 22:03:59 /kd/db/pgdata.7.2.1/base/9993518/9993519.3
;;; (R) bigtab 3239.016 MB (*分割DB表合計*)
;;; ...... 略 .....
;;; (i) pg_type_typname_index 0.016 MB 2002-09-06 17:33:44 /kd/db/pgdata.7.2.1/base/9993518/16458
;;; (s) pg_xactlock 0.000 MB NO FILE NOFILE
;;; (*) bigdb 0.004 MB 2002-09-06 21:53:51 /kd/db/pgdata.7.2.1/base/9993518
;;; ---------------------------------------------------------
;;; 計 bigdb 3240.764 MB
;;; ---------------------------------------------------------
;;;
;;; 上記のように、DBNAME を指定すると、表名とファイルサイズを
;;; ls のように表示してくれるプログラム pgls.c を作成途中なの
;;; ですが、1GB を超えるファイル名の付け方の部分をソースコード
;;; で確認していないので、未公開のままです。
自分が作ったシェルスクリプトでは、このようにしています。
# 指定されたリレーションに分割ファイルがあれば追加する
if [ -f $DATABASEDIR/${relationfileid}.1 ] ; then
dutarget="$dutarget `ls $DATABASEDIR/${relationfileid}.*`"
fi
# TOAST に分割ファイルがあれば追加する
if [ -f $DATABASEDIR/${toastfileid}.1 ] ; then
dutarget="$dutarget `ls $DATABASEDIR/${toastfileid}.*`"
fi
;;; どなたか、ソースコードを調べて頂ければ、プログラムを公開し
;;; ます。あるいは、未完成承知で、デバッグしていただけるならば
;;; ソースコードを差し上げます( GPL ライセンス)。
テーブルまたはインデックス名を指定して、ファイル分割を考慮して、テーブルと対
応する TOAST の合計サイズを求める 40 行のシェルスクリプトを作って使っています。
Kenji Sugita
pgsql-jp メーリングリストの案内