[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 メーリングリストの案内