表格 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 個位元組,因此無法放入堆積頁面中。 當值足夠大時,類型(例如 text
、varchar
和 char
)的可變長度欄位可以將其值異地儲存在表格的 TOAST 表格中。 只有一個 18 位元組的指標必須保留在表格堆積中的元組內。 對於較短長度的可變長度欄位,將使用 4 位元組或 1 位元組的欄位標頭,並且該值儲存在堆積元組內。
從表格中刪除的欄位也會影響最大欄位限制。 此外,儘管針對新建立的元組,已刪除的欄位值在內部被標記為元組的空值點陣圖中的空值,但空值點陣圖也會佔用空間。
每個表格可以儲存理論上最多 2^32 個異地值;有關異地儲存的詳細討論,請參閱第 65.2 節。 這種限制源於使用 32 位元 OID 來識別每個此類值。 實際限制遠小於理論限制,因為隨著 OID 空間填滿,找到仍然可用的 OID 可能會變得昂貴,進而降低 INSERT/UPDATE 陳述式的速度。 通常,這僅僅是包含大量資料的表格的問題; 分割區是一種可能的解決方法。
如果您在文件中發現任何不正確、與特定功能的經驗不符或需要進一步說明的內容,請使用此表單來報告文件問題。