首頁 >資料庫 >mysql教程 >PostgreSQL 中 NULL 值實際消耗多少磁碟空間?

PostgreSQL 中 NULL 值實際消耗多少磁碟空間?

Linda Hamilton
Linda Hamilton原創
2024-12-28 21:52:12655瀏覽

How Much Disk Space Does a NULL Value Actually Consume in PostgreSQL?

了解 PostgreSQL 資料庫中的空值儲存

使用資料庫時,最佳化儲存空間以獲得高效效能至關重要。處理 NULL 值時會出現一個常見問題:儲存 NULL 值需要多少磁碟空間?

在 PostgreSQL 中,NULL 值的儲存因上下文而異。讓我們考慮一下給出的範例,其中列“MyColumn”被定義為“smallint NULL”。在這種情況下,儲存像 0 或 1 這樣的值通常需要 2 個位元組。

儲存 NULL 值

當「MyColumn」設定為 NULL 時,儲存要求變得更加細緻。與直覺相反,NULL 值並不佔用 0 位元組。相反,PostgreSQL 使用一種稱為點陣圖索引的技術來追蹤空值。對於表中的每一行,都會建立一個點陣圖來標記哪些列包含 NULL 值。

現在,讓我們分析一下這種方法的存儲含義:

  • 表少於8 列: 對於最多8 列的表,空位圖存儲在行的標題中,利用其他未使用的位元組填充。因此,在此類表中儲存 NULL 值實際上沒有額外的空間開銷。
  • 具有 8 個或更多列的表: 對於具有 8 個或更多列的表,空位圖需要 MAXALIGN 的額外空間位元組(通常為 8 個位元組)。無論任何欄位是否包含 NULL 值,都會為每一行指派此空間。

其他注意事項

  • 對齊: 行資料必須與特定邊界對齊以優化記憶體存取。如果空位圖不適合剩餘的填充空間,則可能會添加額外的對齊位元組,這可能會增加儲存需求。
  • 刪除的欄位:甚至是已從表中刪除的欄位定義可能仍反映在空位圖中,佔用一點空間。 VACUUM FULL 無法刪除此空間,需要轉儲/復原週期來回收它。

以上是PostgreSQL 中 NULL 值實際消耗多少磁碟空間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn