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

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

Susan Sarandon
發布: 2024-12-26 03:26:10
原創
813 人瀏覽過

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

NULL 值對 PostgreSQL 磁碟空間消耗的影響

在 PostgreSQL 中,允許 NULL 值的資料列的儲存要求與強制值的資料列不同。考慮下面的表格列定義:

"MyColumn" smallint NULL
登入後複製

儲存整數(例如 0、1 或任何其他值)需要 2 個位元組。但是,問題來了:當「MyColumn」設定為NULL時,會消耗多少磁碟空間?它佔用 0 位元組嗎?

點陣圖與 NULL 儲存

與最初假設的 0 位元組消耗相反,NULL 值不佔用任何空間。相反,PostgreSQL 使用 位圖 來追蹤表中每列的 NULL 狀態。點陣圖中的每一位元代表特定行的 NULL/NOT NULL 狀態。

但是,點陣圖並未指派給每一行。相反,數據對齊是一個需要考慮的因素。 HeapTupleHeader包含每行的信息,佔用23位元組。資料以 MAXALIGN 的倍數(通常為 8 個位元組)開始對齊,為空位圖留下一個位元組的填充。

磁碟空間需求

由於這些因素,空儲存對於最多 8 列的表來說實際上是免費的。但是,對於具有更多列的表,需要額外的磁碟空間,如下所示:

  • 為下一組 64 列分配額外的 MAXALIGN 位元組(通常為 8)。
  • 空間為僅當行中至少存在一個實際 NULL 值時才分配。
  • 在系統目錄中標記為此類的刪除列仍然佔用一點空間在空位圖中。

真實世界測試

廣泛的測試已經證實了這些觀察結果。有關更多詳細信息,請參閱以下討論:

  • https://dba.stackexchange.com/questions/4452/does-not-using-null-in-postgresql-still-use- a -標題中的空位圖

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板