[pgsql-jp: 25047] Re: HDDサイズ
Naofumi Kondoh
nkon @ shonan.ne.jp
2002年 3月 2日 (土) 00:58:33 JST
ソフト工房の近藤です。
sugita @ sra.co.jp wrote:
詳細な資料ありがとうございます。参考になります。
.....snip....
> フィールドが NULL 値かどうかを判断するNULL ビットマスクによって、NULL 値の
> 場合には値を格納する領域はタプル内に取られません。従って、ビットフラグが存
> 在し、すべてのフィールドについてタプル内に格納領域が必要として見積もりをす
> るならば、実測値を下回る可能性は少なくなります。
なるほど。こういう仕掛けになっているんですね。
NULL の場合はデーター領域が節約できるのですね。
私は、NULL 判定が面倒なので、特に支障がないか
ぎり、NOT NULL DEFAULT 0 などとする方式なので
すが、NULL が多い場合は DEFAULT にしないで、
NULL 判定をした方がデータースペースの節約にな
りそうですね。
古い版ですが、Informix ONLINE 4.2 だと INTEGER
型の場合は特定の値を NULL だとする方式で、他に
ビットはとらないけど、ESQL/C で読み込むと、NULL
が integer(4バイト)の範囲内なのでちょっぴりや
やこしいです。
....snip...
> 約 +10% の誤差があります。この誤差は、インデックスファイル内のインデックペー
> ジが 100% 埋まることがないために発生します。
PostgreSQL の Btree index は、reindex か DROP/CREATE
INDEX をしないと、インデックスサイズは増えていくと
思いました。 キーの偏りで中身が少くなっても Btree
node の自動再編成はしないはずですね。更新頻度が高い
場合は、インデックス領域をかなり余分に見込んでおかな
いといけなのではないでしょうか。
> decimal 圧縮 (サイズは値の桁数に依存)
> numeric 圧縮 (同上)
やっぱり圧縮しているんですね。
4 bit に十進数1桁が入る方式でしょうか?。
# COBOL の PACK DECIMAL のような。
> character(n) 圧縮
> character varying(n) 圧縮
> text 圧縮
text 型も圧縮しているとは知りませんでした。
# 石井さんの本をちゃんと読んでいないのが
# バレバレ (^^;;
どんなアルゴリズムですか。オーバーへッドは
どのくらいなんでしょう。
..... snip ...
> データベースのサイズは以下の要因により動的に変化します。
>
> 1) 更新の頻度 (テーブルファイルとインデックスファイルに影響)
> 2) ソートを必要とするクエリーのワークファイル
ソートや JOIN 用のワークエリアの見積りが一番難しい
ですね。何か妙案はありませんでしょうか。
> 3) テンポラリテーブルの使用の有無
> 4) WAL ファイルサイズ
> 5) REINDEX のワークファイル
> 6) バックアップ領域などの付随的なワーク領域
>
> 従って、静的なサイズの見積もりに加え、運用シナリオを作成し、実験を行ってディ
> スク使用量を見積もります。特に 1) は PostgreSQL の追記型という特徴を反映し
> た影響を受けるので、VACUUM の適用と合わせて運用設計を行います。
やはり、運用を想定して実験し、運用状態をモニター
しながら適宜対策するというのが結論でしょうか。
... snip ...
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(株)ソフト工房 近藤直文 Email: nkon @ shonan.ne.jp
《 PostgreSQL+PHPソースコードジェネレーターデモGPL版 》
http://www.SOFTKOUBOU.co.jp/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
pgsql-jp メーリングリストの案内