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

PostgreSQL 中 NULL 值實際使用了多少磁碟空間?

Patricia Arquette
Patricia Arquette原創
2024-12-26 10:53:14416瀏覽

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

PostgreSQL 中NULL 值的磁碟空間要求

建立資料庫表時,考慮其列的儲存要求非常重要,尤其是處理可處理可為空值時。了解 NULL 值的儲存方式可以最佳化磁碟空間使用。

NULL 值的儲存

在 PostgreSQL 中,NULL 值使用位元遮罩表示,稱為空位圖。點陣圖中的每一位對應於表中的一列。如果某位元設為 1,則表示對應列為 NULL。

NULL 位圖所佔用的磁碟空間

空位圖的大小取決於表中的列數。對於8列或更少的表,位圖佔用1個位元組。對於9到64列的表,佔用2個字節,以此類推。但是,由於資料對齊的原因,無論列數多少,包含至少一個 NULL 值的行的最小儲存要求是 1 個位元組。

NULL 欄位的開銷

除了空位圖之外,管理空列不需要額外的位元組。然而,在系統目錄 pg_attribute 中標記為「已刪除」的已刪除列仍佔用空位圖中的一位。此開銷可能會持續到執行轉儲/恢復週期為止。

範例和測試結果

考慮一個具有以下列定義的表:

"MyColumn" smallint NULL

在此列中儲存值0 或1 將需要2 個位元組。對於NULL 值,適用以下儲存要求:

  • 對於具有8 或更少列的表:

    • 沒有額外的磁碟空間
  • 適用於9 至64人的桌子欄位:
    • 空位圖 1 個位元組
  • 超過 64列的表:
    • 多個額外的位元組MAXALIGNs

廣泛的測試表明這些儲存要求對於所有表都是一致的。透過在小表(少於 9 列)中儲存 NULL 值來最佳化磁碟空間使用是有益的,但在較大的表中它變得不那麼重要。

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

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