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

Atsuki Ito atsuki @ pst.fujitsu.com
2002年 11月 19日 (火) 13:19:47 JST


はじめまして富士通プライムソフトテクノロジの伊藤です。

 丁度ソースを見ていたので。
 
 1GB を超えるファイル名の付け方の部分ですが、7.2.3のソースですと
 src/backend/storage/smgr/md.c:948
 で作成しているようです。
 『sprintf(fullpath, "%s.%u", path, segno);』

> ピリオドに1から始まる連番を付けるようです。
 この通りみたいです。

On Tue, 19 Nov 2002 12:09:18 +0900
Naofumi Kondoh <nkon @ shonan.ne.jp> wrote:

> ソフト工房の近藤です。
> 
> # 別スレッドにしました。
> # 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 ライセンス)。


------------------------------------------------------------
伊藤 淳樹(あつき)  atsuki @ pst.fujitsu.com
(株)富士通プライムソフトテクノロジ http://www.pst.fujitsu.com/




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