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

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

Patricia Arquette
リリース: 2024-12-25 22:18:17
オリジナル
597 人が閲覧しました

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

PostgreSQL で NULL 値を保存するために必要なディスク容量

列を null 許容 smallint として定義する場合、0 や 1 のような値を保存するには 2 バイトが必要であると想定されます。 。ただし、列が NULL に設定されている場合、どのくらいのスペースが占有されるのでしょうか?

ストレージの最適化

PostgreSQL では、NULL 値には専用のストレージ スペースは必要ありません。代わりに、ビットマップを使用して、行内のどの列に NULL 値が含まれるかを示します。 1 つ以上の null を含む行の場合、適切なサイズ (最も近いバイトに切り上げられる) のビットマップが行のヘッダーに追加されます。

データ配置に関する考慮事項

データ配置は重要な役割を果たします。メモリ管理における役割。 PostgreSQL では、HeapTupleHeader (行ヘッダー) は 23 バイトを占め、列データは常に MAXALIGN (通常は 8 バイト) の倍数に揃えられます。その結果、null ビットマップで利用できる行ヘッダー内に 1 バイトのパディングが存在します。

小規模テーブル用の空きストレージ

前述のデータ配置により、テーブルは最大数になります。最大 8 列には NULL 値を完全に無料で保存できます。この制限を超えると、追加の MAXALIGN バイトが次の 64 列に割り当てられます。ただし、この追加スペースは、行に実際の null 値が存在する場合にのみ占有されます。

削除された列と Null ビットマップ

列がテーブルから削除された場合でも、それらは引き続きビットを占有します。 pg_attribute システム カタログにリストされているままの場合は、null ビットマップに含まれます。その結果、削除された列が NULL ビットマップに必要なスペースに寄与する可能性があり、このスペースは VACUUM FULL 操作後でも保持される可能性があります。

結論

PostgreSQL の NULL 値は、ビットマップ メカニズムを使用して効率的に保存されます。 。ただし、データの配置とテーブル内の列の数は、これらの値を格納するために必要なディスク領域の量に影響を与える可能性があります。これらの最適化手法を理解すると、データベースのパフォーマンスを最適化し、ストレージ要件を最小限に抑えることができます。

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

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