您好,登錄后才能下訂單哦!
這篇文章主要介紹postgresql中oid重置的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
在PostgreSQL中經(jīng)常碰到OID和XID。oid:行的對(duì)象標(biāo)識(shí)符(對(duì)象 ID)。這個(gè)字段只有在創(chuàng)建表的時(shí)候使用了 WITH OIDS ,或者是設(shè)置了default_with_oids配置參數(shù)時(shí)出現(xiàn)。這個(gè)字段的類(lèi)型是 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ù)器上賦值的。 對(duì)于一個(gè)大型或者長(zhǎng)時(shí)間使用的數(shù)據(jù)庫(kù),這個(gè)計(jì)數(shù)器是有可能重疊的。 因此,假設(shè) OID 是唯一的是非常錯(cuò)誤的,除非你自己采取了措施來(lái)保證它們是唯一的。
XID:事務(wù)ID,也是 32 位的量。在長(zhǎng)時(shí)間運(yùn)轉(zhuǎn)的數(shù)據(jù)庫(kù)里,它也可能會(huì)重疊。重疊后數(shù)據(jù)庫(kù)就有可能出錯(cuò),所以需要采取措施解決。 只要我們采取一些合適的維護(hù)步驟,這并不是很要命的問(wèn)題。比如我們定義做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開(kāi)始位置
-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
以上是postgresql中oid重置的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。