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 或更少列的表:
以上是PostgreSQL 中 NULL 值實際使用了多少磁碟空間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!