支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12

附錄 K. PostgreSQL 限制

表格 K.1 描述了 PostgreSQL 的各種硬性限制。然而,在達到絕對硬性限制之前,可能會先受到實際限制的影響,例如效能限制或可用的磁碟空間。

表格 K.1. PostgreSQL 限制

項目 上限 備註
資料庫大小 無限制  
資料庫數量 4,294,950,911  
每個資料庫的關係 1,431,650,303  
關係大小 32 TB 預設 BLCKSZ 為 8192 位元組
每個表格的列數 受限於可以容納在 4,294,967,295 頁面的元組數量  
每個表格的欄位數 1,600 進一步受限於元組大小是否能放入單個頁面;請參閱下面的注意事項
結果集中欄位數 1,664  
欄位大小 1 GB  
每個表格的索引 無限制 受限於每個資料庫的最大關係數
每個索引的欄位數 32 可以透過重新編譯 PostgreSQL 來增加
分割區鍵 32 可以透過重新編譯 PostgreSQL 來增加
識別字長度 63 位元組 可以透過重新編譯 PostgreSQL 來增加
函式引數 100 可以透過重新編譯 PostgreSQL 來增加
查詢參數 65,535  

表格的最大欄位數會進一步減少,因為儲存的元組必須能夠放入單個 8192 位元組的堆積頁面。 例如,排除元組標頭,由 1,600 個 int 欄位組成的元組將消耗 6400 個位元組,並且可以儲存在堆積頁面中,但是由 1,600 個 bigint 欄位組成的元組將消耗 12800 個位元組,因此無法放入堆積頁面中。 當值足夠大時,類型(例如 textvarcharchar)的可變長度欄位可以將其值異地儲存在表格的 TOAST 表格中。 只有一個 18 位元組的指標必須保留在表格堆積中的元組內。 對於較短長度的可變長度欄位,將使用 4 位元組或 1 位元組的欄位標頭,並且該值儲存在堆積元組內。

從表格中刪除的欄位也會影響最大欄位限制。 此外,儘管針對新建立的元組,已刪除的欄位值在內部被標記為元組的空值點陣圖中的空值,但空值點陣圖也會佔用空間。

每個表格可以儲存理論上最多 2^32 個異地值;有關異地儲存的詳細討論,請參閱第 65.2 節。 這種限制源於使用 32 位元 OID 來識別每個此類值。 實際限制遠小於理論限制,因為隨著 OID 空間填滿,找到仍然可用的 OID 可能會變得昂貴,進而降低 INSERT/UPDATE 陳述式的速度。 通常,這僅僅是包含大量資料的表格的問題; 分割區是一種可能的解決方法。

提交更正

如果您在文件中發現任何不正確、與特定功能的經驗不符或需要進一步說明的內容,請使用此表單來報告文件問題。