這篇文章主要介紹postgresql中oid重置的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
在PostgreSQL中經常碰到OID和XID。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
以上是postgresql中oid重置的方法的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。