ホームページ > データベース > mysql チュートリアル > PostgreSQL で NULL 値が実際に使用するディスク容量はどれくらいですか?

PostgreSQL で NULL 値が実際に使用するディスク容量はどれくらいですか?

Patricia Arquette
リリース: 2024-12-26 10:53:14
オリジナル
425 人が閲覧しました

How Much Disk Space Do NULL Values Actually Use in PostgreSQL?

PostgreSQL での NULL 値のディスク容量要件

データベース テーブルを作成するときは、特に列のストレージ要件を考慮することが重要です。 Null 許容値を扱う場合。 NULL 値の保存方法を理解すると、ディスク領域の使用を最適化できます。

NULL 値の保存

PostgreSQL では、NULL 値は、NULL ビットマップと呼ばれるビットマスクを使用して表現されます。 。ビットマップ内の各ビットは、テーブル内の列に対応します。ビットが 1 に設定されている場合、対応する列が NULL であることを示します。

NULL ビットマップによって占有されているディスク領域

NULL ビットマップのサイズは、テーブル内の列の数。列数が 8 以下のテーブルの場合、ビットマップは 1 バイトを占有します。 9 ~ 64 列のテーブルの場合、2 バイトを占有します。ただし、データの配置により、列の数に関係なく、少なくとも 1 つの NULL 値を含む行の最小ストレージ要件は 1 バイトです。

NULL 列のオーバーヘッド

NULL ビットマップ以外に、NULL 列の管理に必要な追加のバイトはありません。ただし、システム カタログ pg_attribute で「ドロップ済み」とマークされているドロップされた列は、引き続き Null ビットマップ内の 1 ビットを占有します。このオーバーヘッドは、ダンプ/リストア サイクルが実行されるまで持続する可能性があります。

例とテスト結果

次の列定義を持つテーブルを考えてみましょう:

"MyColumn" smallint NULL
ログイン後にコピー

この列に 0 または 1 の値を格納するには 2 バイトが必要です。 NULL 値の場合、次のストレージ要件が適用されます:

  • 8 列以下のテーブルの場合:

    • 追加のディスク容量なし
  • 9~64のテーブル用列:

    • null ビットマップの場合は 1 バイト
  • 64 列を超えるテーブルの場合:

    • 複数追加のバイトMAXALIGNs

広範なテストにより、これらのストレージ要件がすべてのテーブルで一貫していることが示されています。小さなテーブル (9 列未満) に NULL 値を格納してディスク領域の使用量を最適化すると有益ですが、大きなテーブルでは重要性が低くなります。

以上がPostgreSQL で NULL 値が実際に使用するディスク容量はどれくらいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート