PostgreSQL中的OID和XID 說明
更新時(shí)間:2009年09月06日 12:49:42 作者:
在PostgreSQL中經(jīng)常碰到OID和XID,剛才不明白這些東西是干什么的。
oid: 行的對象標(biāo)識(shí)符(對象 ID)。這個(gè)字段只有在創(chuàng)建表的時(shí)候使用了 WITH OIDS ,或者是設(shè)置了default_with_oids 配置參數(shù)時(shí)出現(xiàn)。 這個(gè)字段的類型是 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 位的量,是在同一個(gè)集群內(nèi)通用的計(jì)數(shù)器上賦值的。 對于一個(gè)大型或者長時(shí)間使用的數(shù)據(jù)庫,這個(gè)計(jì)數(shù)器是有可能重疊的。 因此,假設(shè) OID 是唯一的是非常錯(cuò)誤的,除非你自己采取了措施來保證它們是唯一的。
XID:事務(wù)ID,也是 32 位的量。在長時(shí)間運(yùn)轉(zhuǎn)的數(shù)據(jù)庫里,它也可能會(huì)重疊。重疊后數(shù)據(jù)庫就有可能出錯(cuò),所以需要采取措施解決。 只要我們采取一些合適的維護(hù)步驟,這并不是很要命的問題。比如我們定義做vaccum?;蛘呤謩?dòng)重置。
重置用下面的命令:
$ pg_resetxlog --help
pg_resetxlog命令是重置PostgreSQL事務(wù)log的。
使用方法:
pg_resetxlog [OPTION]... DATADIR
選項(xiàng)參數(shù):
-e XIDEPOCH 設(shè)置下一個(gè)事務(wù)ID EPOCH
-f 實(shí)施強(qiáng)制更新
-l TLI,FILE,SEG 強(qiáng)制設(shè)置新事務(wù)log的最小WAL開始位置
-m XID 設(shè)置下一個(gè)MULTI事務(wù)ID
-n 不做更新,只是取出現(xiàn)在的控制值,實(shí)驗(yàn)用的命令
-o OID 設(shè)置下一個(gè)OID,重置OID
-O OFFSET 設(shè)置下一個(gè)MULTI事務(wù)ID的OFFSET
-x XID 設(shè)置下一個(gè)事務(wù)ID,重置XID
寫了這么一些,對內(nèi)部是怎么回事感覺自己還是沒有理清楚。呵呵?。?
例子:
復(fù)制代碼 代碼如下:
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 位的量,是在同一個(gè)集群內(nèi)通用的計(jì)數(shù)器上賦值的。 對于一個(gè)大型或者長時(shí)間使用的數(shù)據(jù)庫,這個(gè)計(jì)數(shù)器是有可能重疊的。 因此,假設(shè) OID 是唯一的是非常錯(cuò)誤的,除非你自己采取了措施來保證它們是唯一的。
XID:事務(wù)ID,也是 32 位的量。在長時(shí)間運(yùn)轉(zhuǎn)的數(shù)據(jù)庫里,它也可能會(huì)重疊。重疊后數(shù)據(jù)庫就有可能出錯(cuò),所以需要采取措施解決。 只要我們采取一些合適的維護(hù)步驟,這并不是很要命的問題。比如我們定義做vaccum?;蛘呤謩?dòng)重置。
重置用下面的命令:
$ pg_resetxlog --help
pg_resetxlog命令是重置PostgreSQL事務(wù)log的。
使用方法:
pg_resetxlog [OPTION]... DATADIR
選項(xiàng)參數(shù):
-e XIDEPOCH 設(shè)置下一個(gè)事務(wù)ID EPOCH
-f 實(shí)施強(qiáng)制更新
-l TLI,FILE,SEG 強(qiáng)制設(shè)置新事務(wù)log的最小WAL開始位置
-m XID 設(shè)置下一個(gè)MULTI事務(wù)ID
-n 不做更新,只是取出現(xiàn)在的控制值,實(shí)驗(yàn)用的命令
-o OID 設(shè)置下一個(gè)OID,重置OID
-O OFFSET 設(shè)置下一個(gè)MULTI事務(wù)ID的OFFSET
-x XID 設(shè)置下一個(gè)事務(wù)ID,重置XID
寫了這么一些,對內(nèi)部是怎么回事感覺自己還是沒有理清楚。呵呵?。?
您可能感興趣的文章:
相關(guān)文章
PostgreSQL數(shù)據(jù)庫視圖及子查詢使用操作
這篇文章主要為大家介紹了PostgreSQL數(shù)據(jù)庫視圖及子查詢的使用操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04Debian中PostgreSQL數(shù)據(jù)庫安裝配置實(shí)例
這篇文章主要介紹了Debian中PostgreSQL數(shù)據(jù)庫安裝配置實(shí)例,一個(gè)簡明教程,需要的朋友可以參考下2014-06-06PostgreSQL 自定義自動(dòng)類型轉(zhuǎn)換操作(CAST)
這篇文章主要介紹了PostgreSQL 自定義自動(dòng)類型轉(zhuǎn)換操作(CAST),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01postgresql 循環(huán)函數(shù)的簡單實(shí)現(xiàn)操作
這篇文章主要介紹了postgresql 循環(huán)函數(shù)的簡單實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01