web-dev-qa-db-ja.com

Postgresのテキストフィールドのデフォルトサイズは何ですか?

公式ドキュメント( http://www.postgresql.org/docs/9.1/static/datatype-character.html )では、textフィールドはvariable unlimited length

このフィールドのデフォルトサイズ(またはフィールドの最小サイズ)は何ですか?

1
Mingyu

text列(NULL値を表す)のデフォルト最小サイズは、残りの行によって異なります。 NULLビットマップに別のビットのためのスペースがある場合、ほとんどの場合、それは完全に解放されます

有効な行サイズの計算の詳細:

4

デフォルトでは、テーブル定義でデフォルトの制約を指定しない限り、そのような列はNULL(長さゼロの文字列とNULLには違いがあることに注意してくださいが、長さがゼロです)であり、挿入時に必要に応じて増加しますデータ。

ディスクにどれだけのスペースが必要かを尋ねている場合、これは決して完全にゼロになることはありませんが、最小サイズが本当に重要な場合はほとんどありません(非常に短い、またはほとんどがNULLのテキストフィールド。 postgresのストレージエンジンがMSSQLと異なる構造を使用していると仮定すると、それらがページ外に格納されている場合(小さい値はページ内に格納される可能性が高い)、文字列の先頭を見つけるためのページ参照(8バイト?)があります。 -そのため、そのようなタイプの最小フットプリントとして、NULLビットマップ内のスペースと、ページ内またはページ外などの他のフラグのスペースを考慮するとよいでしょう。

1
David Spillett