X(Twitter) Zenn GitHub RSS 共有

テーブルサイズの計算

作成日時:2024-11-20
更新日時:2024-11-20

あくまでpostgresベース。

テーブルサイズ

テーブル・インデックスサイズ見積もり(PostgreSQL) - infra検証 blog
73.6. データベースページのレイアウト

※28という数字はどこから?ドキュメントにあるのを合算すると27Byteにならない?(t_cidはt_xvacと共有している)
→多分MAXALIGN距離で4の倍数になった。

上記の他にオーバーヘッドがある。

データ圧縮の影響なども。

簡易的見積

全体サイズを下記の観点で計算する。

ヘッダやオーバヘッドの分として、計算結果を10%~30%程度追加する。

インデックスサイズ見積

詳細は上記リンク参照。

可変長データ型のサイズ

公式ドキュメントではこんな感じ。

NUMERIC → ceil(格納している桁数 ÷ 4) × 2 + 3~8(※1)
VARCHAR → 文字数を保持する領域(※2)+実文字数×1文字あたりのバイト数

※1
3~8は実際の格納数により変わる。
格納されている値の桁数が大きければ大きくなる。

※2
サイズ部長は、データのサイズ(文字数、桁数)が127未満だと1バイト。
127以上だと4バイト使用する。

第8章 データ型
8.1. 数値データ型
8.3. 文字型

実際の格納サイズの確認

SELECT pg_column_size(col) FROM tbl;

リンク

第5回 PostgreSQL でのデータベース構築の際に必要となる物理設計のポイント | Let’s POSTGRES
4. MVCCとストレージ構造 · PostgreSQL Internals
テーブル・インデックスサイズ見積もり(PostgreSQL) - infra検証 blog