ホームページ >データベース >mysql チュートリアル >PostgreSQL で NULL 値が実際に使用するディスク容量はどれくらいですか?
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のテーブル用列:
64 列を超えるテーブルの場合:
広範なテストにより、これらのストレージ要件がすべてのテーブルで一貫していることが示されています。小さなテーブル (9 列未満) に NULL 値を格納してディスク領域の使用量を最適化すると有益ですが、大きなテーブルでは重要性が低くなります。
以上がPostgreSQL で NULL 値が実際に使用するディスク容量はどれくらいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。