目錄
一、字符類型(Character Types)
二、二進制類型(Binary Types)
三、數值類型(Numeric Types)
四、其他類型
五、全局限制:單行數據總大小
示例對比表
注意事項
驗證命令
在 PostgreSQL 中,不同數據類型的最大長度限制各異。以下是關鍵類型的詳細說明:
一、字符類型(Character Types)
-
VARCHAR(n)
?/?CHAR(n)
- 最大長度:
n
?最大可設置為?10485760
(即 10 MB) - 實際存儲空間 = 實際字符數 + 1~4 字節開銷(取決于長度)
- 示例:
VARCHAR(1000)
?允許最多存儲 1000 個字符。
- 最大長度:
-
TEXT
- 理論無上限,但受單行數據總大小限制(通常?1 GB)
- 無需指定長度,適合存儲大段文本(如日志、文章)。
二、二進制類型(Binary Types)
BYTEA
- 最大 1 GB
- 適合存儲圖片、加密數據等二進制內容。
三、數值類型(Numeric Types)
NUMERIC(p, s)
- 精度?
p
(總位數)最大為 1000 - 小數位?
s
?需滿足?0 ≤ s ≤ p
- 示例:
NUMERIC(1000, 2)
?可存儲 1000 位數字(含 2 位小數)。
- 精度?
四、其他類型
-
位串類型(
BIT(n)
?/?VARBIT(n)
)n
?最大為?10485760
(10 MB)- 存儲二進制位序列。
-
數組類型(
ARRAY
)- 元素總數和總大小受?1 GB 行限制?約束。
五、全局限制:單行數據總大小
- 所有字段總長度 ≤ 1 GB(實際可用約?8060 MB,因存在元組頭部開銷)
- 超限解決方案:
- 使用?
TOAST
(自動壓縮/溢出存儲,默認啟用) - 拆分大字段到關聯表。
- 使用?
示例對比表
數據類型 | 最大長度設置 | 適用場景 |
---|---|---|
VARCHAR(n) | n ≤ 10485760 | 短文本(用戶名、地址) |
TEXT | 無限制(≤1 GB/行) | 大文本(文章、日志) |
BYTEA | 1 GB | 二進制數據(圖片、文件) |
NUMERIC(p,s) | p ≤ 1000 | 高精度數值(財務計算) |
注意事項
- 性能影響:
- 大字段(如 >1 KB)會觸發?
TOAST
?存儲機制,可能輕微影響查詢速度。
- 大字段(如 >1 KB)會觸發?
- 設計建議:
- 優先用?
TEXT
?替代?VARCHAR(n)
(除非需強制長度約束)。 - 超 1 GB 數據考慮外部存儲(如文件系統+數據庫路徑存儲)。
- 優先用?
驗證命令
-- 創建測試表(TEXT類型)
CREATE TABLE large_text (id SERIAL, content TEXT);-- 插入1GB數據(需足夠內存/磁盤)
INSERT INTO large_text (content)
SELECT REPEAT('X', 1024 * 1024 * 1024); -- 若超限會報錯
通過合理利用數據類型和?TOAST
?機制,PostgreSQL 能高效處理海量數據。