總覽
在PostgreSQL中,對象標識符OID用來在整個數據集簇(initdb初始化的數據存儲區即爲數據集簇)中唯一地標識一個數據庫中的對象,這個對象可以是數據庫、表、索引、視圖、元祖、類型等。PostgreSQL內置了Oid類型表示OID,它本身時一個無符號整數。
分配策略
- 通常從1開始
- 首先一部分分配給了系統表相關的對象(如元祖、索引等),此外爲了擴展會保留一般部分OID,可以從系統表對應的頭文件中找到部分OID。
- 用戶自定義是否需要元組,只需要使用WITH OIDS。
- OID的分配由一個全局的OID計數器管理,並採用互斥鎖避免OID同時分配給多個對象,默認狀態下時用戶不設置OID。
注意事項
- 主要用戶系統表內部作爲主鍵,最好不要用來作爲用戶數據的主鍵,因爲Oid由4個字節的int類型表示,有數量限制。