[pgsql-jp: 28023] DB FILE (Re: )

Naofumi Kondoh nkon @ shonan.ne.jp
2002年 11月 19日 (火) 12:09:18 JST


ソフト工房の近藤です。

# 別スレッドにしました。
# Re: [pgsql-jp: 28003] Re: Linux Worldのデータベース記事

Jun Kitamura wrote:
> 北村@zoozee です。

...略....

> PostgreSQL では、データベースの実態は、(デフォルトでは) /data/base
> 以下に データベースの OID がディレクトリ名として入っています
> よね。その下に、テーブルやらインデックスやらの OID がファイ
> ル名として存在していますよね。(ここまでで間違ってたらゴメン
> ナサイ)。
...略...
> ここで石井さんのおっしゃる、「データファイルを1GB単位で分割
> する」というのは、その OID(例えば 1234) に _2 とか付けて
> (1234_2 という名前のファイルが生成されて)、1ファイルをマック
> ス1GB として扱ってくれる、ということでしょうか。
...略...

/data/base 以下ではなく、$PGDATA/base の下ですね。

表やインデックス等々に対応した UNIX FILE 名 relfilenode は、
下記 SQL で取得できます。

select relfilenode, relname, relkind from pg_class  ;

 relfilenode | relname               | relkind
-------------+-----------------------+---------
     9652427 | 郵便番号簿            | r
     9826486 | 役職区分表_pkey       | i
     9652423 | 役職区分表            | r
     9652429 | 売上表                | r
     9826479 | 受講者表_pkey         | i
     9652439 | 受講者表              | r
     9652409 | 写真集2_整理番号_seq | S

version 7.2.1 でテストした範囲では、1GB未満の場合は、
UNIX FILE NAME は、relfilenode のとおり。1GB を超えると、
ピリオドに1から始まる連番を付けるようです。

(例)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 を超えるファイル名の付け方の部分をソースコード
で確認していないので、未公開のままです。

どなたか、ソースコードを調べて頂ければ、プログラムを公開し
ます。あるいは、未完成承知で、デバッグしていただけるならば
ソースコードを差し上げます( GPL ライセンス)。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文        Email:  nkon @ shonan.ne.jp
http://www.SOFTKOUBOU.co.jp/      http://www.shonan.ne.jp/~nkon/
2002-11-28(木)19:00-21:30 第8回PostgreSQL業務アプリ分科会 勉強会
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/





pgsql-jp メーリングリストの案内