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