程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> PostgreSQL >> PostgreSQL中的OID和XID 說明

PostgreSQL中的OID和XID 說明

編輯:PostgreSQL
oid: 行的對象標識符(對象 ID)。這個字段只有在創建表的時候使用了 WITH OIDS ,或者是設置了default_with_oids 配置參數時出現。 這個字段的類型是 oid (和字段同名)。
例子:
復制代碼 代碼如下:
CREATE TABLE pg_language
(
lanname name NOT NULL,
lanowner oid NOT NULL,
lanispl boolean NOT NULL,
lanpltrusted boolean NOT NULL,
lanplcallfoid oid NOT NULL,
lanvalidator oid NOT NULL,
lanacl aclitem[]
)
WITH (
OIDS=TRUE
);

OID 是 32 位的量,是在同一個集群內通用的計數器上賦值的。 對於一個大型或者長時間使用的數據庫,這個計數器是有可能重疊的。 因此,假設 OID 是唯一的是非常錯誤的,除非你自己采取了措施來保證它們是唯一的。
XID:事務ID,也是 32 位的量。在長時間運轉的數據庫裡,它也可能會重疊。重疊後數據庫就有可能出錯,所以需要采取措施解決。 只要我們采取一些合適的維護步驟,這並不是很要命的問題。比如我們定義做vaccum。或者手動重置。
重置用下面的命令:
$ pg_resetxlog --help
pg_resetxlog命令是重置PostgreSQL事務log的。
使用方法:
pg_resetxlog [OPTION]... DATADIR
選項參數:
-e XIDEPOCH 設置下一個事務ID EPOCH
-f 實施強制更新
-l TLI,FILE,SEG 強制設置新事務log的最小WAL開始位置
-m XID 設置下一個MULTI事務ID
-n 不做更新,只是取出現在的控制值,實驗用的命令
-o OID 設置下一個OID,重置OID
-O OFFSET 設置下一個MULTI事務ID的OFFSET
-x XID 設置下一個事務ID,重置XID
寫了這麼一些,對內部是怎麼回事感覺自己還是沒有理清楚。呵呵!!
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved