[pgsql-jp: 26677] Re: INSERT件数の最大

sugita @ sra.co.jp sugita @ sra.co.jp
2002年 7月 12日 (金) 21:28:16 JST


  杉田です。

From: <tyunn @ to.email.ne.jp>
Date: Fri, 12 Jul 2002 19:25:21 +0900

;;; テーブルtesttbl で
;;; f0 int4
;;; f1 varchar(2)
;;; f2 bool
;;; f3 date
;;; f4 serial
;;; という構成の場合、1レコードの大きさは、
;;; それぞれ 4 byte
;;;        2*4 byte

  varchar は可変長になります。EUC_JP で漢字 2 文字ならば 8 バイト。 英字 1 文
字ならば 5 バイトです。

;;;        2 byte

  bool は 1 バイトですが、この場合には後続項目との間にアラインメントが 3 バイ
ト入ります。

;;;        4 byte
;;;        ? byte(serial型は?byteですか?)

  4 バイトです。8 バイトの serial8 もあります。

;;; で 、計 18+? byte。

  NULL 値がない場合で、f1 に漢字 2 文字で、56 バイトです。

  ここらのことは、以下のドキュメント、

    ====  ソースディレクトリの doc/FAQ_japanese  ====
    4.7) 一般的なテキストファイルからデータを保存するには、データベースのディ
    スク容量はどのくらい必要です?

マニュアルは、

    PostgreSQL 7.2.1 User's Guide
    Chapter 3. Data Types

あたりが関連します。データが圧縮される場合もあります。FAQ に書かれている結構値
は概算で、実際にデータを入れて、以下のツールでレコードサイズを確認するとい
う方法もあります。FAQ をもう少し詳しくした資料を以前 ML に投稿してあります。

    http://sources.redhat.com/rhdb/tools.html
    pg_filedump

  ある程度大雑把には見積もれますが、予想されるデータを考えて、実際に実験して確
認することはした方がよいです。

;;; testtblにはデータは、最大何件保存できるのでしょうか?

  CREATE で WITHOUT OIDS を付けないと約 40 億レコード、付けるとそれを越えて保
存できます。FAQ に、「4.6) 行、テーブル、データベースの最大サイズは?」という
のがあります。

  ディスク容量としては、レコードサイズの他にもソートなどのワークファイルが動的
に発生し、トランザクションログのファイルサイズなども考える必要があります。

# やろうと思えば、スキーマ定義から静的なディスク容量の概算を見積もるツールは作
# れそうです。


Kenji Sugita



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